How to Migrate From Bitly or a QR Tool Without Breaking Codes
The one rule that decides whether printed codes survive a move, what nine vendors let you export and edit, the steps for links on your own domain, and the honest options for codes on someone else's.
Whether a printed QR code or short link survives a move depends on who controls the domain inside it. Static codes hold the destination in the image and never need moving. Dynamic codes and short links on a vendor's domain, like bit.ly or qrco.de, can only be re-pointed by that vendor, so keep paying for them or re-point each one to a page you control and reprint over time. Links on a domain you own can move: export them, recreate the same endings at the new provider, test, then switch DNS and keep the old account until cached DNS expires.
- Static codes can't break or move, because the destination is in the image.
- Codes and links on a vendor's domain stay with that vendor.
- Own-domain links move by export, recreating the same endings, testing, then switching DNS.
- Keep the old account for at least a billing cycle while cached DNS expires.
- Ask the new provider which redirect it sends and whether it stops browsers caching it.
Whether a printed QR code or short link survives a move depends on one thing: who controls the domain inside it. A static QR code holds your destination in the image, so there's nothing to move. A dynamic code or short link on a vendor's domain, such as bit.ly or qrco.de, points at that vendor's redirect, and only the vendor can re-point it. A link on a domain you own can move: export it, recreate the same ending at the new provider, test, then switch your DNS.
So you can migrate from Bitly without breaking links on your own domain, but you can't take bit.ly links with you. For those, you keep the old account running or replace the printed codes over time. This guide shows how to tell which you have, what nine vendors allow (checked September 2026), and the steps in order.
The one rule: who controls the domain
Whoever controls a domain decides where its links go. The W3C's Architecture of the World Wide Web gives a URI's owner the right "to associate a resource with an owned URI," delegated through DNS. The IETF's RFC 8820 (BCP 190, June 2020) says a URI's structure belongs to "the owner of the URI." Bitly owns bit.ly. You own your domain.
Product packaging follows the same rule. GS1's resolver standard (release 1.2.1, ratified August 2026), for the GS1 Digital Link addresses in QR codes on products, works much like a dynamic QR code. Resolvers "SHALL redirect to the default link," and "each resolver/internet domain remains sovereign over its URI space."
Google ran the clearest test. Firebase's FAQ says Firebase Dynamic Links shut down on August 25, 2025, and links on page.link "will no longer be available." Developers on a custom domain could "update your FDL rewrite rules… to use the same domain with a different deep-linking service." Same domain, new service: the links could keep working.
To check what you have, point your phone camera at a printed code and read the domain it previews before you tap:
- An address on your own site (yourbrand.com/menu): either a static code or a dynamic code on your domain. Either way, you control it.
- A vendor's short domain (bit.ly, qrco.de or the vendor's name): a dynamic code or short link the vendor controls. QR Code Generator's help center says you can't convert a dynamic code to static because "Dynamic QR Codes contain a short URL."
- Your own short domain (go.yourbrand.com): portable, provided the registration is in your name.
One trap: a static code that encodes a bit.ly address is a bit.ly link in practice, because the link inside the image still belongs to Bitly. Our guide to dynamic QR codes covers the difference in more depth.
What can you do with each kind of code or link?
Sort everything you've printed into these rows before you touch any account. No new provider can change which row a code is in.
| What's printed | Who controls it | What you can do |
|---|---|---|
| Static QR code with your own URL | You | Nothing to move. Keep the destination page live. |
| Static QR code with a vendor short link | The vendor | Treat it as a vendor short link (next rows). |
| Dynamic QR code on the vendor's domain | The vendor | Keep paying, or re-point it to a page you own, then reprint over time. |
| Short link on the vendor's domain | The vendor | Same, and export the list of destinations. |
| Link on a domain the vendor gave you | Usually the vendor | Check the transfer rules first. Bitly's help center says a complimentary domain "cannot be transferred to you or another owner." |
| Link or dynamic code on a domain you own | You | Portable: export, recreate the endings, switch DNS. |
QRCode Monkey users have nothing to migrate. Its FAQ says the codes "are static" and "will work forever!" For how expiry works across the rest of the market, see do QR codes expire?
Vendor rules for export, editing and cancellation (checked September 2026)
Each cell below links the vendor's own help center, blog or terms as of September 2026. Policies change without notice, so open the page before you rely on it.
| Vendor | Export | Editing and domains | After you cancel or downgrade |
|---|---|---|---|
| Bitly | Links export as a CSV by email, "available with some paid plans" (source), and codes as a ZIP of images (source) | "Links cannot be redirected using a Free account" (source). Redirecting a link updates its QR code (blog) | bit.ly links "continue to work" after a downgrade (source); after deletion they can't be edited, and when a complimentary domain lapses, "your links will break" (source) |
| Rebrandly | An official API recipe writes your links to a CSV | "Some editing options are only available on paid subscriptions" (source) | Links keep working on a free account, but "Deleting your account will delete your links" (source) |
| TinyURL | The API returns "a list of all available URLs in the account" (source); we found no official CSV export | Free Plan links "can't be edited once they're made" (source) | The account "will revert to the Free Plan"; the article says nothing about links (source) |
| QR Code Generator | Scan stats export as CSV (source) and bulk image download is Professional and Enterprise only (source) | If you change a published code's short URL, the printed version "will no longer work" (source) | Dynamic codes are deactivated when a trial ends (source) or the account is deleted (source); its blog says "If you stop paying, the links pause" (source) |
| QRCode Monkey | Nothing to export: codes are static | "you can't edit the content of the QR Codes again" (FAQ) | "They do not expire and will work forever!" |
| Uniqode | CSV on "PRO plan and above," with QR Code URL and Destination URL columns (source); API from Pro/Core up (source) | Changing the domain on printed codes means they "will stop working" (source) | Dynamic codes "will only expire if your Uniqode account is canceled" (source); paying again restores "their original short URLs" (source) |
| Flowcode | CSV of names, short links and destinations, only for codes in folders (source) | After a downgrade, only the 2 most recent codes stay editable (source); after a contract lapses you can't "update backend details such as scan destination" (source) | Help center: remaining codes "will continue to scan" (source). Terms: codes above the free threshold are "re-directed to flowcode.com or another location of our choosing" (terms) |
| QRStuff | Analytics as Excel or PDF; we couldn't confirm a code-list export (FAQ) | Only dynamic codes can be edited; choosing static or dynamic "is a one-time thing" (FAQ) | FAQ: codes expire 30 days after cancellation or code creation, whichever is later, with a 10-scan monthly limit. 2018 terms: Full subscribers' codes "never expire" (terms) |
| Scanova | We couldn't confirm a code-list export | Custom-domain traffic "will still go via Scanova servers" (source) | Dynamic codes "will stop working" and stay in the account 26 months for reactivation; static codes keep working (expiry, cancel) |
Two vendors contradict themselves. Flowcode's help center and its terms of use, effective April 26, 2024, disagree as the table shows, and the terms also reserve the right to "allow any third party to use the Whitelabeled Domain, or use it ourselves."
QRStuff's FAQ gives a second window elsewhere, 30 days or a year after a monthly or annual plan ends, while its terms, last updated in 2018, say Full subscribers' codes "never expire." When a vendor's FAQ and terms disagree, plan around the stricter one, and ask the vendor in writing which applies.
How do you migrate from Bitly or another shortener on your own domain?
If your links sit on a domain registered in your name, you can move them and keep every printed code working. Rebrandly says it "doesn't currently offer a built-in way" to switch links to a new domain, and suggests exporting through the API, editing the CSV and re-importing. Export and recreate is the workable route, though no vendor documents a hand-off to a competitor.
- Export everything as a CSV or through the API. Bitly has a v4 REST API, Rebrandly publishes a CSV recipe, and Uniqode's CSV lists each code's short URL and destination. Save the file outside the vendor's account.
- Confirm you own the domain at your registrar. Bitly's help center says your own domain can move between registrars. Rebrandly lets you take a domain you bought from it to another registrar, after a 60-day transfer lock.
- Recreate the same endings at the new provider. Import the CSV and check each ending (the part after the slash) matches character for character: go.yourbrand.com/spring must stay /spring. Never let a tool regenerate a printed code: Uniqode warns that changing the domain "will regenerate the QR image… any printed or shared versions of the original code will stop working."
- Test before you switch. Check the imported endings against your export, row by row for your most-scanned codes. If the new provider offers a fallback page for unknown endings, set one, so a missed ending lands on your site instead of an error.
- Switch DNS from the old vendor's records to the new provider's. Bitly's help center says a custom domain points at Bitly through two A records (67.199.248.12 and 67.199.248.13) or a CNAME to cname.bitly.com (source). Then scan real printed codes and check the browser shows a secure connection.
- Keep the old account until real scans land correctly. Don't remove the domain from the old vendor first. Rebrandly says that when you delete a domain you didn't buy from it, "all links and resources related to that domain will no longer be available." Don't downgrade first either: Bitly's help center says custom-domain links on a lower plan keep working only while DNS points to Bitly, and "We won't renew your domain's SSL certificate" (source).
The old vendor is also your rollback. Until cached DNS records expire, some scans still reach the old vendor, so keep that account for at least a billing cycle. For why short links go dead in the first place, see our piece on link rot.
Can you move dynamic QR codes to another provider?
Only when the code's domain is yours. A dynamic code on a vendor's domain sends every scan to that vendor first, so no other provider can answer it. That leaves one slow path.
- Re-point each code to a page you control, while editing still works. Change the destination to yourbrand.com/menu or similar. From then on, you update what people see by editing your own page.
- Find out what the vendor does when you stop paying. Some keep codes scanning on a cheaper plan: Rebrandly says "Even if you downgrade to a free account, all your links will continue to function." Others, such as Uniqode and Scanova, switch dynamic codes off (see the table). If yours does, keep paying until the reprint is done.
- Reprint over time with codes on your own domain as menus, signs and packaging wear out or run out. Track which printed item uses which code, so you know when the last one is gone.
A new provider can't take over bit.ly/yourcode, and a dynamic code can't become a static one. If a service offers to "transfer" your vendor-domain codes, ask how it will answer scans on a domain it doesn't control. Our guide to cancelling a QR code subscription covers the timing.
Should your new links use a 301 or a 302 redirect?
A 301 means moved for good and a 302 means moved for now. MDN explains that a permanent redirect means "the original URL should no longer be used," while for a temporary one, crawlers "don't memorize the new, temporary URL." Its table lists 308 as permanent and 307 as temporary, and all four are defined in RFC 9110, section 15.4. Google Search Central says that for 301 and 308, "the indexing pipeline uses the redirect as a signal that the redirect target should be canonical," and advises: "Use permanent redirects when you're sure that the redirect won't be reverted."
For a link you plan to edit, the cache headers matter too. MDN lists 301 as cacheable by default. Unless the provider also sends a header such as Cache-Control: no-store, a browser that saw a 301 may reuse it, and a returning visitor could land on the old destination after you change it. A temporary redirect is the conventional signal for a move you'll reverse, like a seasonal menu code.
Ask your new provider which status code it sends and whether it tells browsers not to cache it. Rebrandly, for example, says it uses a 301. Whooshly sends a 301 with Cache-Control: private, no-store on editable short links and dynamic QR codes, so browsers don't reuse an old destination.
What happened when goo.gl, Firebase and tr.im shut down?
In each case, whoever held the domain decided what happened to the links.
- goo.gl, 2018. Google announced on March 30, 2018, that new users would be cut off on April 13, 2018, and the service discontinued on March 30, 2019. It said "all existing links will continue to redirect," and you could "export your link information from the goo.gl console."
- goo.gl, 2024–2025. On July 18, 2024, Google said that after August 25, 2025, "all links served will return a 404 response." A warning page started on August 23, 2024, and links made by Google apps were exempt. An update on August 1, 2025 narrowed that: only links with "no activity in late 2024" would be deactivated, and "All other goo.gl links will be preserved."
- Firebase Dynamic Links, 2025. It shut down on August 25, 2025. Firebase's FAQ says "All links clicked will return a HTTP 404." Links on a custom domain could move to another service.
- tr.im, 2009. The shortener announced its links would "cease to work by the end of the year," then reversed the decision. TechCrunch reported that the scare led to 301works, an archive project that Bitly and others joined.
Google changed its goo.gl plan twice in seven years. You can't control a vendor's roadmap, but you can control the domain on the next thing you print.
Your pre-move checklist
- List every printed item (menus, signs, packaging, cards, flyers, ads) and the domain each code shows.
- Sort each one into the triage table above.
- Export links and codes to a CSV you keep outside the vendor's account.
- Confirm the domain is registered in your name, and read the vendor's terms as well as its FAQ.
- Re-point vendor-domain codes to pages you own while editing still works.
- Recreate every ending character for character, test, switch DNS, then scan real printed codes.
- Keep the old account until real scans land correctly.
- Put every new code on your own domain.
If you move to Whooshly, you can import a CSV of your links and keep the same endings where they're still available, so a link on your own domain reads the same after the move. One custom domain comes with Core, a one-time $35 payment (Business covers 10); the free trial doesn't include custom domains. On that domain, you can set a fallback page for endings you haven't imported yet, so a missed one lands on your site. Whooshly can't rescue codes that live on another vendor's domain. For those, the steps above are the only real path.