What gets included in a share
By default, the share is a snapshot of your entire instance folder with one exception: the saves directory is skipped, so your worlds and player data don't travel with the share. Everything else does.
For mods, resource packs, and shader packs, GDLauncher resolves each file against the CurseForge and Modrinth caches by hash. When a file matches a public project on either platform, the share stores only the hash (no JAR redistribution) and the recipient re-downloads from the original CDN on import. Files that don't match anywhere, typically private mods, removed projects, or hand-built JARs, get bundled into the archive's overrides/ directory so the recipient still ends up with the same setup.
Everything else in the instance folder is bundled as-is into overrides/. That includes config/, KubeJS scripts, options.txt, server lists, crash reports, logs, and screenshots/. Heads-up: if you don't want your screenshots or logs sent along, clear those folders before sharing.
If the instance is paired with a CurseForge or Modrinth modpack, the share also records that pairing so the recipient sees it as the same pack rather than a generic instance.
Sharing your worlds too
The Share Instance dialog has an Include saves toggle under Advanced. Flip it on and the saves directory ships with the share, so the recipient lands in the same world(s) you have. It's off by default for two reasons: most shares are "give me your modpack, I'll start fresh", and saves can be very large, which makes the upload heavy and counts against your share quota faster.
Who needs a GDL account
Only the person creating the share. A GDL account with a verified email is required to upload, because share codes are tracked server-side, attribution, quota, expiry, and the optional max-downloads cap all live against the creator's account.
The recipient does not need a GDL account. They paste the code into the Code Share tab and GDLauncher pulls the instance, no sign-in required. This matters when you're sharing with someone who hasn't set up a GDL account yet (or doesn't want one), they can still install your instance immediately.
If you'd rather skip the GDL service entirely, see Export an Instance instead. Export produces a local .zip file you can deliver out of band, no accounts on either side.
Expiry and download limits
Expiration defaults to 1 day. Switch to 7 days for share codes you want to remain usable for a week. After expiry, the GDL service returns a "code expired" error and your friend has to ask for a fresh one.
Max downloads caps how many times the code can be redeemed. If you set it to 1, the code dies after the first import. Useful for one-on-one sharing where you don't want the link forwarded.
Importing a code (the other side)
On the recipient's GDLauncher (no GDL account required):
- Open the Library page → click the + in the Library toolbar (or right-click empty space → Import Instance).
- Switch to the Code Share tab.
- Paste any of the following into the input:
- the bare code on its own (e.g.
abc1234), - a
gdl.gg/i/<code>short link, - a
gdlauncher.com/instance-share/<code>link, - or a
gdlauncher://share/<code>deep link.
- the bare code on its own (e.g.
- GDLauncher fetches a preview from the GDL service. The preview shows the title, the mod list, and the sharer's identifier.
- Confirm. The mods download fresh from their original CDNs; configs come from the share snapshot.
If a mod has been removed
The share references mods by their platform IDs. If one of those mods has been removed from CurseForge or Modrinth between when you generated the share and when your friend imports it, the import for that specific mod fails. GDLauncher imports what it can and shows an error for the missing one. You can regenerate the share after replacing the missing mod, or your friend can install the rest and find the missing mod manually.