baff.gg Docs Developer Portal

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-M9QX

The 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:

OptionWhat comes over
Server nameThe Discord server's name, which you can change here (2 to 100 characters)
Server iconOnly shown when the Discord server has an icon
RolesNames, colors, permissions and order
CategoriesThe categories, with their order
ChannelsText, 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 permissionsWho can see and talk in each channel. Needs Channels. Overrides for roles also need Roles; without Roles, only the @everyone overrides come over
EmojiUp to 150 custom emoji
MessagesAlways 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 /migrate in 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.

Discordbaff.gg
Text channelText channel
Announcement channelAnnouncement channel
Voice channelVoice channel
Stage channelVoice channel
Forum channelText channel
Media channelText channel
CategoryCategory
Threads and forum postsNot 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:

Discordbaff.gg
AdministratorAdministrator
Manage ServerManage Server
Manage RolesManage Roles
Manage ChannelsManage Channels
Kick MembersKick Members
Ban MembersBan Members
Create InviteCreate Invite
Manage ExpressionsManage Emoji
Manage WebhooksManage Webhooks
View ChannelsView Channel
Send MessagesSend Messages
Manage MessagesManage Messages
Attach FilesAttach Files
Add ReactionsAdd Reactions
Mention @everyone, @here, and All RolesMention Everyone
ConnectConnect
SpeakSpeak
VideoVideo (camera and screen share)

Every other Discord permission is dropped. The ones that change most how a server behaves:

Discord permissionOn baff.gg
Read Message HistoryAnyone 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 CommandsSend Messages also covers using commands
Use External EmojisAnyone can use custom emoji from every server they're in
Embed LinksLink previews show for everyone's links
Create Public Threads, Create Private Threads, Send Messages in ThreadsThreads use Send Messages
Use Voice ActivityPush 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, _3 and 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

  1. Everyone needs a baff.gg account. Signing up is free at https://baff.gg.
  2. 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.
  3. Post the link on Discord, for example in your announcement channel.
  4. 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.