For server owners
Migrate from Discord
Copy a Discord server's channels, roles and emoji into a new baff.gg server.
baff.gg can build a new server from one you run on Discord: the same categories and channels in the same order, the same roles with their colors and permissions, who can see each channel, and your custom emoji. You add a small baff.gg bot to the Discord server, run one command there, pick what to bring over, and baff.gg creates the server.
Messages and members don't come over. The bot can't read messages at all, so your history stays on Discord.
Before you start
- A baff.gg account. To bring over the server icon and emoji, its email has to be verified.
- Manage Server in the Discord server. Owners and Administrators have it.
- Room for one more server. An account can be in up to 100 servers.
The move makes a new baff.gg server with you as its owner. It doesn't add anything to a server you already have.
Step by step
1. Start on baff.gg
Press Add a Server (the + in the server list on the left), then Migrate a Server, then Migrate from Discord. baff.gg shows a code like K7F2-M9QX, how long it lasts, and the two steps below.
2. Add the baff.gg bot to your Discord server
Press Add Bot on Discord. Discord's own page opens in a new tab. Pick the server you're moving and confirm. Discord only lists servers where you have Manage Server.
The bot asks for no permissions. See what the bot can see.
3. Run /migrate in Discord
In any channel of that Discord server, type /migrate, pick the bot's command, and paste your code (the Copy button next to the code on baff.gg copies it):
/migrate code: K7F2-M9QXThe bot answers privately, so only you see its reply. Back on baff.gg, the dialog changes by itself to Linked to your server by your Discord username. You don't need to refresh.
The code links whichever Discord server it's run in to your baff.gg account. Run it yourself, or give it only to a co-admin you trust. If the dialog shows the wrong server or person, press Start Over to get a new code.
4. Pick what to bring over
Everything you're allowed to bring starts switched on. Turn off what you don't want:
| Option | What comes over |
|---|---|
| Server name | The Discord server's name, which you can change here (2 to 100 characters) |
| Server icon | Only shown when the Discord server has an icon |
| Roles | Names, colors, permissions and order |
| Categories | The categories, with their order |
| Channels | Text, voice, announcement and forum channels (forums keep their tags, with emoji where possible, their default order and "require a tag"). The dialog says when media or stage channels will be converted: media channels become forums |
| Channel permissions | Who can see and talk in each channel. Needs Channels. Overrides for roles also need Roles; without Roles, only the @everyone overrides come over |
| Emoji | Up to 150 custom emoji |
| Messages | Always off. Messages stay on Discord |
Press Create Server.
5. Wait for it to finish
The server, its roles and its channels are created first. The icon and emoji upload after that, and the dialog shows how far it is (for example, emoji 40 of 120).
When it's done, you see how many roles, channels and emoji came over, and how many emoji failed, if any. Press Open Server to go to it. By then the bot has left your Discord server.
You can close the dialog at any point without cancelling anything. Open Add a Server > Migrate a Server > Migrate from Discord again to pick up where you left off. Start Over cancels the move and makes the bot leave the Discord server; it's not available while the server is being created.
6. Invite your members
See Getting your members over.
Codes expire
- You have 30 minutes after the code appears to run
/migratein Discord. - Once it's linked, you have 60 minutes to pick what to bring over and press Create Server.
When a code expires, the bot leaves the Discord server and nothing is created. Start again from Migrate from Discord to get a new code, and add the bot again.
What comes over
Server
- The name, or the one you typed in the dialog.
- The icon, resized to 256 x 256. Animated icons stay animated.
Channels and categories
Every channel keeps its name, its category and its place in the list. In each category, text channels come before voice channels, the way Discord shows them, and channels outside a category sit above the categories. Text channel names become lowercase with dashes.
| Discord | baff.gg |
|---|---|
| Text channel | Text channel |
| Announcement channel | Announcement channel |
| Voice channel | Voice channel |
| Stage channel | Voice channel |
| Forum channel | Text channel |
| Media channel | Text channel |
| Category | Category |
| Threads and forum posts | Not brought over |
- Forum and media channels arrive as empty text channels, since their posts are threads.
- Stage channels become normal voice channels: everyone with Speak can talk.
- Topics come over, up to 1,024 characters.
- Slowmode comes over, rounded to the nearest setting baff.gg offers.
- NSFW channels become age-restricted channels: people under 18 (by the birthday on their account) can't open them, and adults confirm before they see it the first time.
- Voice channel bitrate and user limits are dropped. baff.gg voice channels don't have them.
Roles
- Each role's name, color, permissions and place in the order.
- Display role members separately: those roles get their own group in the member list on baff.gg too.
- The @everyone role's permissions go to baff.gg's @everyone.
- Left out: roles that belong to bots and integrations, the Server Booster role, role icons, and whether anyone can @mention the role.
As the owner of the new server, you can edit every role afterwards in Server Settings > Roles.
Permissions
Discord has more permissions than baff.gg. These come over, on roles and in channel overrides:
| Discord | baff.gg |
|---|---|
| Administrator | Administrator |
| Manage Server | Manage Server |
| Manage Roles | Manage Roles |
| Manage Channels | Manage Channels |
| Kick Members | Kick Members |
| Ban Members | Ban Members |
| Create Invite | Create Invite |
| Manage Expressions | Manage Emoji |
| Manage Webhooks | Manage Webhooks |
| View Channels | View Channel |
| Send Messages | Send Messages |
| Manage Messages | Manage Messages |
| Attach Files | Attach Files |
| Add Reactions | Add Reactions |
| Mention @everyone, @here, and All Roles | Mention Everyone |
| Connect | Connect |
| Speak | Speak |
| Video | Video (camera and screen share) |
Every other Discord permission is dropped. The ones that change most how a server behaves:
| Discord permission | On baff.gg |
|---|---|
| Read Message History | Anyone who can view a channel can read its history. A channel that hid its history from a role on Discord doesn't on baff.gg |
| Use Application Commands | Send Messages also covers using commands |
| Use External Emojis | Anyone can use custom emoji from every server they're in |
| Embed Links | Link previews show for everyone's links |
| Create Public Threads, Create Private Threads, Send Messages in Threads | Threads use Send Messages |
| Use Voice Activity | Push to talk is each person's own choice |
Also dropped, among others: Timeout Members, Manage Threads, Manage Events, View Audit Log, Mute Members, Deafen Members, Move Members, Priority Speaker, Request to Speak, Create Expressions, Use External Stickers, Use Soundboard, Send TTS Messages and Use Activities.
Channel permissions
Overrides set on channels and categories for @everyone and for roles come over, with each permission mapped by the table above (dropped permissions are left out of the override). Overrides for single members are dropped, because members don't come over.
Check private channels after the move, especially if they relied on a permission that's dropped, like Read Message History.
Emoji
- Up to 150, baff.gg's limit per server, still and animated in any mix. With more than 150, the first 150 in Discord's order come over.
- Names stay the same. When two emoji share a name, the later ones get
_2,_3and so on (wave,wave_2).
What doesn't come over
- Messages, along with their files, reactions and pins. See below.
- Members. Discord and baff.gg accounts aren't connected, so people join again on baff.gg.
- Threads and forum posts.
- Stickers and soundboard sounds.
- AutoMod rules.
- Events.
- Onboarding questions.
- Webhooks, and Discord bots and their roles.
- Bans. Ban people again on baff.gg if they show up.
- Invite links. Make new ones on baff.gg.
- Voice channel bitrate and user limits.
- Role icons.
- Member-specific channel overrides.
What the bot can see
Messages are never copied, and the bot can't read them:
- It asks for no permissions when you add it.
- It doesn't have Discord's Message Content access.
- It never connects to Discord's gateway, the live connection bots use to receive messages and events.
It only reads the server's name, icon, roles, emoji and channel list, once, when you run /migrate. Your message history stays on Discord; keep the Discord server if you want people to be able to look things up there.
The bot leaves your Discord server by itself as soon as the move finishes, is cancelled with Start Over, or its code expires. You don't need to remove it.
Getting your members over
- Everyone needs a baff.gg account. Signing up is free at https://baff.gg.
- Make an invite link. In your new server, click the server name above the channel list and pick Invite People. For a link you'll post on Discord, set Expire after to Never.
- Post the link on Discord, for example in your announcement channel.
- Give people their roles. Roles don't follow people from Discord, since baff.gg can't tell which Discord account is whose. When they join, open Server Settings > Roles, pick a role, then Manage Members > Add Members. You can also click someone's name and use the + under Roles on their profile card.
Troubleshooting
The code doesn't work or has expired
Copy it with the Copy button instead of typing it. A code lasts 30 minutes until it's used; after that, start again from Migrate from Discord for a new one. If the dialog already shows Linked to another server, that code was used there: press Start Over for a new code.
"You need Manage Server"
The bot checks that whoever runs /migrate has Manage Server in that Discord server. Ask the owner for a role that has it, or have someone who does run the command with your code. If /migrate doesn't show up in the command list at all, it's usually the same reason: Discord only shows it to people with Manage Server, unless the server changed that in its Integrations settings.
The bot isn't in the server
If /migrate doesn't appear, the bot may have been added to a different server, or not at all. Press Add the baff.gg bot to your Discord server again and check you pick the right one. The bot also leaves after a move finishes, is cancelled or expires, so a new attempt needs it added again. You also need to be allowed to use app commands in the channel you type in.
The icon and emoji are greyed out
They say Verify your email to bring over images: accounts without a verified email can't upload images. Open the link in the email baff.gg sent when you signed up (or press Resend in the yellow bar at the top of baff.gg), then open the dialog again.
If they're greyed out even with a verified email, image uploads aren't available on baff.gg right now. You can bring the rest over and add the icon later in Server Settings > Overview and emoji in Server Settings > Emoji.
The Discord server has more than 150 emoji
Only the first 150 come over. After the move, swap emoji in Server Settings > Emoji: delete ones you don't need and upload others you saved from Discord. The same goes for any emoji the summary lists as failed.
Migrate from Discord says "Not available right now"
baff.gg's Discord bot isn't running at the moment. Try again later.
You're in too many servers
You're already in 100 servers, the most one account can be in. Leave one, then press Create Server again.