Restore a Discord Server
Restore a Discord server from a backup, pull members back and restore their roles — plus what to do first if the server was nuked.
Recovery is a sequence, not one button. Restore the structure, pull members back, then restore their roles. If the server was attacked, contain the attacker before any of it — restoring into a live compromise repeats the damage and destroys the evidence.
Which path do you need?
| Situation | What to do |
|---|---|
| Only members need to move | Pull members. No backup restore needed — skip to step 3 |
| Only channels or roles were damaged | Restore a backup over the existing server — skip to step 2 |
| The server was nuked or the owner was compromised | Start at step 1. Contain access before restoring anything |
| The server was deleted | Create a new one, invite the bot, restore the backup into it, then pull members |
| You have no backup | Rebuild manually, then pull members — see If no backup exists |
The order
- Contain — Secure owner, revoke access, rotate tokens
- Restore structure — Channels, roles, permissions, messages
- Pull members — Prior-authorized members only
- Restore roles — Re-assign saved roles to members who returned
- Reopen — Staff first, then the community
Do not start a production restore while a compromised owner, admin, bot token, webhook or integration can still change the server.
1. Contain the damage
Secure the owner account
Change the password from a trusted device, verify MFA, review active sessions, and secure the connected email. If ownership is lost, use Discord's official support path.
Cut off access
Revoke unknown admin roles, integrations, applications and webhooks. Rotate exposed bot tokens and API keys. Never paste replacement secrets into chat or tickets.
Preserve evidence and pick a snapshot
Record UTC timestamps, audit-log entries and affected objects before rebuilding. Then choose a recovery point created before the first malicious change — not automatically the newest one.
2. Restore the server
Prepare the destination
Install the secured bot, give its own role Administrator (restores won't start without it), drag that role above everything it must create, and confirm the exact guild shown in RestoreCord before starting. If the bot's role lacks Administrator, RestoreCord stops with Administrator Permission Required and an Open Admin Invite button.
Run the restore
Pick the snapshot, the message count, and whether to clear the destination. Clearing is destructive — use it only for a deliberate clean rebuild.
Watch the task
Structure comes back first, then history. Record permission failures, rate limits and skipped objects instead of launching overlapping restores.
Dashboard controls are in the Snapshots guide.
3. Pull members back
Members are not in a snapshot. Only people who authorized through RestoreCord before the incident are eligible, and Discord can still refuse individual adds.
- Start only once the target server, bot permissions and verification config are stable.
- Let the migration reconcile members already present so they are not counted as failures.
- Track outcomes separately — succeeded, already present, skipped, ineligible, failed. Do not report the pre-incident member count as recovered.
- Tell members some will need a fresh invite; no service can force an ineligible account into a guild.
See Pull Members for the procedure.
4. Restore member roles
A restore recreates roles with new Discord IDs, so old assignments cannot carry over automatically. RestoreCord re-maps every member's saved roles to the new IDs and holds that mapping for 7 days, surfaced as a Pending Role Restore banner on the Backups page.
For example, a returning member who held Member, Verified, Moderator and Event Host gets all four roles back on their profile as the role restore works through their 4 assignments.
The Pending Role Restore banner shows how many members have roles waiting to be restored, the number of role assignments and the time until the data expires (for example: 412 members • 968 role assignments • Expires in 6d 21h). Click the banner to open Restore Member Roles.
- Backup restore finishes — Roles are recreated with new IDs; each member's saved roles are re-mapped and queued for 7 days.
- Banner appears — “Pending Role Restore” shows on the Backups page with member and assignment counts.
- Pull members first — Roles can only be assigned to members already in the server.
- Run Restore Roles — Runs in the background at Discord-safe rates; cancel any time, assigned roles are kept.
Pull members before restoring roles. Discord only assigns roles to members already in the server — anyone still missing when the role restore runs is skipped and their saved roles are dropped.
- The restore runs in the background at Discord-safe rates and reports progress in Running Tasks.
- Cancelling keeps the roles already assigned; the rest stay pending.
- The bot needs Manage Roles, and its own role must sit above every role it assigns.
- Roles managed by integrations, or deleted since the restore, are reported as skipped in the modal.
- Deleting the pending data is permanent — the remaining roles then have to be reassigned by hand.
5. Validate and reopen
- Owner and admin accounts use MFA; unknown sessions are gone.
- Bot tokens, API keys and webhook secrets were rotated.
- Permission overwrites match the intended design and private channels are still private.
- Role restore finished, and the skipped list was reviewed and handled manually.
- Verification, firewall rules and webhook logging were tested end to end.
- A fresh snapshot was taken after stabilization, and the next restore test is on the calendar.
Reopen in stages — staff, then a small member group, then everyone — and watch the audit log between stages.
If no backup exists
- Secure the guild and document whatever roles, channels, permissions and audit evidence remain.
- Rebuild only the essential channels and least-privilege roles first.
- Invite members through trusted official channels; use the member pull only if valid prior authorization exists.
- Create a snapshot once stable, preview it, test-restore it into a spare server, and enable a schedule if your plan allows.