ForwardX is an Android app that automatically copies messages from one Telegram chat to another, using your own account. Its Free, Automatic, Filterable and Always ON
- π² Install the app
- π First-time setup
- π§© The basics
- π οΈ Make your first rule
- π Every rule field explained
- π¬ Content categories
- βͺ Backfill old messages
- βοΈ Settings explained
- π Always-on: every situation
- π± Ready-made recipes
- π Tips & troubleshooting
The app ships as a few different APK files β one per phone type. Pick just one:
| APK file | Pick this if⦠|
|---|---|
app-arm64-v8a-release.apk |
β You have a normal, modern phone (2017 or newer). Best choice for 95% of people β smallest download. |
app-armeabi-v7a-release.apk |
You have an older / low-end 32-bit phone. |
app-x86_64-release.apk |
You're running an Android emulator on a PC. |
app-universal-release.apk |
Not sure which one you need? This works on every device (just a bit bigger). |
π€ Why so many files? Each phone chip needs slightly different internal code. Shipping the exact one your phone needs keeps the download small. When in doubt, grab
universalβ it always works.
To install: download the APK β open it β allow "Install from unknown sources" if Android asks β tap Install. β
- π Notifications β required so Android lets the background service keep running.
- π Ignore battery optimization β stops Android from killing the app to "save battery." This is essential for reliable, non-stop forwarding.
ForwardX logs in as you, so Telegram needs your own personal API keys first.
- On a browser, visit my.telegram.org and log in with your phone number.
- Open "API development tools."
- Fill in the short form (App title:
ForwardX, short name:forwardx, platform: Android β anything works here). - You'll get an
api_id(a number) and anapi_hash(a long string of letters and numbers). Keep both handy.
- Launch ForwardX β paste your API ID and API Hash β Continue.
- Enter your phone number with country code (e.g.
+919876543210) β Send code. - Telegram sends a login code to your Telegram app β type it in β Verify.
- Have Two-Step Verification on? Enter your password β Unlock.
π Your privacy: your credentials stay only on your phone. Nothing is ever uploaded anywhere.
Just three words to know:
- π₯ Source β the chat you copy messages from (a channel, group, or even a private chat).
- π€ Destination β the chat you send messages to. One rule can send to several destinations at once.
- π Rule β the recipe connecting them: "from this source, forward messages matching these filters, to these destinations."
The main power switch: on the Home screen there's a big toggle.
- ON β forwarding is live (a small notification shows the app is running).
- OFF β nothing gets forwarded.
π‘ Tip: you can build rules while forwarding is off, then flip the switch on once you're ready.
Let's forward everything from a channel called "Movies HD" into your own "My Backup" channel:
- Go to the Rules tab β tap β.
- Rule name: give it something memorable, like
Movies backup. - From: tap it, pick Movies HD.
- To: tap it, pick My Backup (you can add more destinations here too).
- Leave everything else as-is for now.
- Tap Save rule.
- Go to Home and flip the main toggle ON.
π That's it! New posts in Movies HD now land in My Backup automatically.
β οΈ A rule only saves once it has a name, a source, and at least one destination.
Want to change it later? Rules tab β tap the rule. Want to try it safely first? Use the Test π§ͺ button on the rule β nothing gets sent.
Fields are grouped into sections inside the rule editor. You really only need the first three (Name, From, To) β everything below is optional fine-tuning.
- From: the source chat (required).
- To: one or more destinations (at least one required).
π Example: From =
Anime Uploads, To =My AnimeandBackup Drive Channelβ every match goes to both.
- Priority (
0β100): when several rules watch the same source, higher numbers get checked first. - Exclusive stop: if this rule matches, stop β don't let lower-priority rules also grab the message.
π‘ A file can match multiple rules. Priority + Exclusive stop lets you send each message to exactly one place. See the category routing example.
- Off (default) β a normal Telegram forward (shows "Forwarded fromβ¦").
- On β re-sends as a fresh copy, no "Forwarded from" tag.
β οΈ Caption edits (Section 5.9) only work when Copy mode is ON, since cleaning a caption means re-sending the message.
Choose exactly what this rule should forward:
ALL Β· TEXT ONLY Β· MEDIA ONLY Β· PHOTOS Β· VIDEOS Β· DOCUMENTS Β· AUDIO Β· VOICE
π Example: set to VIDEOS to skip text chatter and photos, and forward only video posts.
Automatically detects each file's type and forwards only the categories you pick β full details in Section 6. Leave everything off to allow any type.
- Must match ALL selected:
- ON β the file must match every selected category (e.g.
Movie + Split= only split movies). - OFF β the file can match any one of them (e.g.
MovieorSplit).
- ON β the file must match every selected category (e.g.
Forward messages only from certain senders:
- Any (default)
- Specific users β only listed user IDs
- Admins β only chat admins
- Anonymous admins β messages posted "as the channel"
- Verified β only blue-tick verified accounts
π Example: in a busy group, set to Admins so only staff posts get forwarded.
- Only if contains β forward only when the caption has one of these (comma = "any of").
- π
1080p, 2160p, 4kβ forwards posts mentioning any of those.
- π
- Skip if contains β block the message if it contains any of these.
- π
sample, trailer, hdcamβ skips samples, trailers, hdcam.
- π
- Regex toggle β treat the box as one regular expression (
|for alternatives).- π
S\d{2}E\d{2}β only posts with anS01E02-style tag.
- π
- Case sensitive / Whole word only β fine-tunes non-regex matching.
- Min MB / Max MB β only forward files in a size range (e.g. Min
100skips tiny junk/sample files). - Filename contains (comma = any) β e.g.
1080p, x265. - Ends with (comma = any) β e.g.
.mkv, .mp4β only those extensions. - Regex (
|= multiple) β e.g.S\d{2}E\d{2}\.mkv$.
βΉοΈ All filled-in file filters must pass together (AND). Empty ones are simply ignored.
Clean up messy captions before sending:
- β Clean filename caption β the smart one. Strips links,
@usernames,#hashtags, emojis, and decorative symbols, then trims everything after the file extension (keeping a.001split suffix if present).- Before:
π¬ Tuck Jagadish (2021) 1080p WEB-DL.mkv βββββββββββ π₯ via @SomeBot π https://t.me/somechannel #Bollywood #Movies - After:
Tuck Jagadish (2021) 1080p WEB-DL.mkv
- Before:
- Remove links / @usernames / #hashtags / emojis β individual strippers, if you don't want the full trim above.
- Prepend / header β text added at the top, e.g.
π¬ New upload:. - Append / footer β text added at the bottom, e.g.
Join @MyChannel. - Find & replace β custom text swaps, with optional regex / case-sensitivity per row.
Only forward within a chosen time window and set of days.
π Example:
22:00 β 06:00, MonβFri β forwards only overnight on weekdays. (Overnight windows crossing midnight are supported.)
- Delay before forwarding (
0β120s) β wait before sending each match (adds to the global delay in Settings). - Max retries on failure (
0β10) β how many times to retry a failed send. - Sync edits β if the original message is edited, update the forwarded copy too.
- Sync deletes β if the original is deleted, delete the forwarded copy too.
ForwardX reads each file's caption first, then its filename, and auto-tags it β no manual keyword typing needed.
A single film β detected by a release year or a standalone video/document with no episode markers.
Tuck Jagadish (2021) 1080p WEB-DL.mkv
Inception.2010.BluRay.x264.mkv
Interstellar 2014 2160p HDR.mkv
Episodic content with an S01E05, 1x05, or "Season + Episode" marker.
Loki S01E05 1080p.mkv
The Office 1x05.mkv
Breaking Bad Season 2 Episode 3.mkv
A multi-episode pack β episode ranges, or "complete / batch" whole-season packs.
Loki S01 E01-E06.mkv
One Piece Complete Season 1.mkv
Attack on Titan S04 Batch.zip
EP01 to EP12 720p
A multi-part upload β split file parts.
BigMovie.2021.1080p.mkv.001
Season.Pack.7z.002
film.part1.rar
Movie.cd2.avi
π A file can be several categories at once. Example:
Loki S01 E01-E06.mkv.001is TV Show + Combined + Split, all together.
Since one file can match multiple categories, combine Priority + Exclusive stop so each file lands in exactly one place. Recommended setup (highest priority first), all with Exclusive stop ON and Must match ALL ON:
| Priority | Rule (categories) | Destination |
|---|---|---|
| 60 | Combined + Split + TV Show | Combined-Split-Series channel |
| 50 | Combined + TV Show | Combined-Series channel |
| 40 | Split + TV Show | Split-Series channel |
| 30 | TV Show | Series channel |
| 20 | Split + Movie | Split-Movies channel |
| 10 | Movie | Movies channel |
This exact setup is available as a ready-to-import recipe β see Section 10.
π Worked example: a post
Loki S01 E01-E06.mkvis detected as TV Show + Combined β matches the priority-50 rule first (Exclusive stop) β goes only to the Combined-Series channel.
Normally ForwardX only forwards new messages. Backfill sends the messages that already exist in a channel's history β perfect for when you set up a rule after the content was posted.
Open it: Rules tab β Backfill (top right).
It scans the source once and runs every historical message through all the rules for that source β so it obeys the exact same filters and category routing as live forwarding.
- Source channel β pick which source to import (only sources with at least one enabled rule are listed). A π·οΈ badge means that source routes by category.
- Range β how much history to import:
- All messages β the entire history.
- Last N messages β the newest N (slider, 50β5000).
- New messages only β just the messages posted since your last completed backfill of this source. It's fast because it skips re-scanning the whole history β perfect for a quick "top up" after you've already imported once.
- Message range β a precise slice using message links/numbers:
- From message (optional) β start here (blank = oldest).
- To message (optional) β stop here (blank = latest).
- Get a message link: in Telegram, long-press a message β Copy Link (or just note its number).
- π From
.../1200, To blank β message 1200 onward. From blank, To.../5000β everything up to 5000. Both filled β just that slice.
- Order β Oldest first (recommended, keeps original order) or Newest first.
- Preview matches β a dry run showing how many messages would forward vs. be skipped, before anything is sent.
- Start backfill β begins the run, with a live progress bar, Forwarded / Skipped / Failed counts, and an ETA. A notification keeps it going even if you leave the screen.
- Pause / Resume β temporarily halt and continue.
- Stop β ends the run but saves your place.
- Resume later β reopen Backfill for the same source β a "Resume available" banner appears β tap Resume to continue exactly where you left off (or Start over to restart). Already-forwarded messages are auto-skipped, so nothing is ever sent twice.
π’ Backfilling a huge channel sends a lot of messages, paced by the anti-flood setting (Section 8) to keep your account safe β big imports simply take a while.
Live forwarding only works while ForwardX is actually running. So if your phone was switched off, the app was closed, or you lost internet, any messages posted during that gap were never forwarded β they slip through the cracks. ForwardX can fill that gap for you in two ways:
- π’ Automatically β turn on Auto catch-up on startup in Settings. Every time the app reopens and reconnects, it checks how far behind it is and quietly forwards just the messages you missed, then carries on live. (It only runs when the main power switch is ON.)
- π Manually β when auto catch-up is off, a "Catch up on missed messages" card appears on the Home screen whenever there's a gap. One tap forwards the missed messages. (The card hides itself while a catch-up or backfill is already running, so it never gets in the way.)
Behind the scenes this is simply a "New messages only" backfill (Section 7.2), so it's quick β and thanks to duplicate protection, it never re-sends anything you already have.
π You'll know when it's done: whenever a backfill or catch-up finishes, ForwardX posts a notification with the result (e.g. "1,240 forwarded Β· 88 skipped Β· 3 failed") β so you don't have to sit and watch a long import.
| Setting | What it does |
|---|---|
| π Start on boot | Automatically resumes forwarding after your phone restarts β you don't have to open the app. (Just opening the app also resumes forwarding on its own.) |
| π₯ Auto catch-up on startup | When the app starts and reconnects, automatically forwards anything posted in your sources while it was offline, then continues live (see Section 7.4). Off by default. Runs only when the main power switch is ON. |
| π‘οΈ Duplicate protection | Never forwards the same message twice (survives restarts). Scope: Per rule (default) or Per destination (skip if it already reached that destination via any rule β great when several sources feed one channel). |
| π’ Min send interval | Minimum gap between two sends. Higher = safer from Telegram rate limits. Start around 1200 ms, raise for big backfills. |
| β±οΈ Global delay | Extra pause added before every send, on top of each rule's own delay. |
| π¨ Theme | System / Light / Dark. |
| πΎ Export / Import rules | Back up all rules to a JSON file, or load rules from a file β this is how you use the recipes. |
| πͺ Log out | Disconnects your Telegram session and returns to the login screen. |
| βΉοΈ About | Credits and links to other projects. |
Other screens: π Logs shows every forward/skip/failure with the reason. π Stats shows per-rule totals.
π§ Why anti-flood matter: Telegram limits how fast an account can send. Too fast triggers a temporary "FLOOD_WAIT," or worst case, a ban. ForwardX funnels all sends through one paced queue to stay under the limit β that's why sends are spaced out on purpose.
Confused about what forwards, when, and why? It all comes down to 3 switches and 2 ways a message gets delivered.
| Switch | Where | What it does |
|---|---|---|
| π Power button | Home | The master ON/OFF. Nothing forwards unless this is ON. |
| π Start on boot | Settings | After the phone restarts, turns the power back on by itself. |
| π₯ Auto catch-up | Settings | After being offline, automatically forwards the messages that were missed. |
- β‘ Live β forwarded the instant it's posted β but only while ForwardX's background worker is alive.
- βͺ Catch-up β forwards messages missed while the worker wasn't alive (automatically, or by tapping the Home card).
π The one golden rule: messages forward only while the background worker is alive. Everything else is just about (a) keeping it alive and (b) filling the gaps from when it wasn't. The worker keeps running even when you swipe the app away β it only dies when the phone turns off or Android kills it to save battery.
When the Power button is ON:
| Situation | Worker alive? | The file⦠| When you reopen the app |
|---|---|---|---|
| App open, you're using it | β | forwarded instantly (live) | nothing to do |
| You swipe the app away | β (it survives) | forwarded instantly (live) | nothing to do |
| Android killed it in the background | β | missed during the dead time | forwarding resumes β Auto catch-up ON: sent automatically Β· OFF: tap the catch-up card |
| Phone powered off / restarted | β | missed while off | see "After a restart" below |
When the Power button is OFF: nothing is forwarded at all, in any situation β and catch-up won't run either (it needs Power ON).
| Start on boot | What happens |
|---|---|
| ON | Forwarding turns itself back on automatically β no need to open the app. |
| OFF | Forwarding stays off until you open the app (opening it turns forwarding back on). |
Then, once forwarding is back on:
| Auto catch-up | The files missed while the phone was off⦠|
|---|---|
| ON | get forwarded automatically. |
| OFF | wait for you β the catch-up card appears on Home; tap it to send them. |
β οΈ Start on boot only does something if the power was ON before the phone turned off. If you'd already turned forwarding off, it stays off after a reboot.
For truly hands-free, never-miss-anything forwarding, turn on all three:
Power ON + Start on boot ON + Auto catch-up ON
That way, after any reboot or background-kill, ForwardX restarts itself, forwards anything it missed, and keeps going β you never have to touch it. And if you ever open the app and see no catch-up card, that means nothing was missed. π―
Import these to get started fast: Settings β Import rules β paste the JSON (or load the file). After importing, open each rule and set its From/To β recipes ship with placeholders since only you know your channel IDs.
| Recipe | What it does |
|---|---|
simple-mirror.json |
Forwards everything from one chat to another. |
movies-clean-captions.json |
Forwards only movies, in copy mode, with fully cleaned captions. |
keyword-and-schedule.json |
Only 1080p/4k videos over 100 MB, skips samples/ads, overnight only. |
media-routing-rules.json |
The full 6-category routing set (Movies, Split Movies, TV, Split TV, Combined TV, Combined Split TV) with priority + exclusive-stop. |
Category values for JSON:
"MOVIE","TV_SHOW","COMBINED","SPLIT"Media types:"ALL","TEXT_ONLY","MEDIA_ONLY","PHOTOS","VIDEOS","DOCUMENTS","AUDIO","VOICE"File sizes are in bytes (100 MB =104857600). Schedule times are minutes from midnight (1320= 22:00).scheduleDaysMaskis a bitmask (127= every day).
- β Keep forwarding reliable: grant the battery-optimization exemption, enable Start on boot, and turn on Auto catch-up on startup so anything missed during downtime is forwarded automatically.
- π« Avoid bans: don't set the send interval too low. For big backfills, raise Min send interval first.
- βΎοΈ "Connectingβ¦" won't go away? Make sure you're logged in and online β a fresh login walks through phone β code β (password).
- π Nothing is forwarding? Check: the Home toggle is ON, the rule is enabled, the source matches where messages actually arrive, and filters aren't too strict. Use Test or Preview β the Logs screen shows the exact reason.
- βοΈ Caption not cleaned? Caption edits only apply in Copy mode.
- π Protected ("no-save") channels: messages Telegram blocks from saving can't be forwarded or copied, and are skipped automatically.
- ποΈ Your data: everything (session, rules, credentials) stays on your device β nothing is uploaded anywhere.







