Skip to main content

Discord Ferry

CI Latest release Python 3.11+ License: MIT

Migrate your Discord server to Stoat (formerly Revolt), messages, channels, roles, emoji, attachments, and all.

One-click app for Windows and Mac. Command-line interface for Linux. No coding required. Your data stays on your machine.


Download

Platform Download Size
Windows Ferry.exe ~48 MB
macOS, Apple Silicon (M1–M5) Ferry.zip ~48 MB
macOS, Intel Ferry.zip ~48 MB
Linux / pip pipx install discord-ferry ~2 MB

macOS: the first launch is blocked by Gatekeeper because Ferry is not notarized. Click Done, not "Move to Bin", then approve it once under System Settings → Privacy & Security → Open Anyway. Full walkthrough in the installation guide.


What is Stoat?

Stoat (formerly Revolt) is an open-source chat platform, like Discord, but community-owned. You can use the official hosted service or run it on your own server. Ferry moves your entire Discord server there.

New to Stoat? Create a free account or self-host your own instance.


How It Works

Step 1: Enter your credentials

Launch Ferry. You'll need four things:

  • Discord user token + server ID, a token is a secret key that lets Ferry access your account. Ferry shows you how to find both.
  • Stoat API URL, the web address Ferry uses to talk to Stoat. Use https://api.stoat.chat for the official service, or your own domain if you run your own Stoat instance.
  • Stoat user token, a secret key your browser saves when you log in to Stoat. No bot or app creation needed, you just copy it from your browser. The step-by-step guide shows exactly where to find it.

Step 2: Ferry exports your server automatically

Ferry downloads and runs the Discord server export tool, DiscordChatExporter (DCE), behind the scenes. No manual steps are needed.

Step 3: Click Migrate

Messages, channels, roles, emoji, and attachments migrate to Stoat. Each message shows the original author's name and avatar. Pins are preserved.

Already have DCE exports? Ferry also supports offline mode, just point it at your export folder.


How long does it take?

Ferry processes multiple channels in parallel (configurable, default 3 concurrent). Typical throughput: ~3-5x faster than sequential. Stoat limits how fast data can be sent to protect the service, which sets the overall pace. That means:

Messages Estimated time
1,000 ~6 minutes
10,000 ~1 hour
100,000 ~8-10 hours

Ferry can pause and resume, close it anytime, pick up where you left off.


What gets migrated?

Discord feature What happens
Text channels Recreated on Stoat with the same names and topics
Categories Recreated in the same order as on Discord, with channels grouped the same way
Roles All server roles recreated, even roles nobody posted with, with colours, hierarchy, hoisting ("display separately"), image icons, and Discord permissions translated to Stoat equivalents
Channel permissions Per-role and @everyone overrides migrated
NSFW channels NSFW flag preserved
Server description & NSFW flag Copied to the new Stoat server
Slowmode Per-channel slowmode settings preserved
Voice user limits Per-channel user limits preserved
Messages + authors Each message shows the original author's name and avatar
File attachments Uploaded to Stoat's file storage
Custom emoji Uploaded (up to 100, the most-used, uploadable emoji are kept)
Pinned messages Re-pinned in the correct channels
Replies Reply links preserved between messages
Reactions Shown as text summary by default, or applied via API (Stoat allows at most 20 reactions per message)
Embeds Flattened to Stoat format with thumbnails and images uploaded
Polls Active polls are unavailable; closed-poll notifications keep DCE's fallback text and embeds
Threads Converted to text channels, merged into parent, or archived as markdown, your choice
Forum posts Grouped into dedicated categories with an index channel
Voice channels Created, but may not work yet (known Stoat bug)
Stickers Image uploaded, or text fallback for animated/missing
Server banner Uploaded from Discord API when a Discord token is provided
Original timestamps Shown at the start of each message (e.g. *[2024-01-15 12:00 UTC]*)

Some of these need a Discord token to read live server data: role hoisting and icons, roles nobody posted with, server description, category ordering, slowmode, and voice user limits. In offline mode (export folder only), Ferry migrates what the export contains and skips the rest with a warning.

Reliability features

Ferry is built to handle large migrations safely:

  • Pause and resume, close Ferry anytime, pick up where you left off
  • Parallel channel sends, processes multiple channels concurrently (3x–5x faster)
  • Tunable performance, concurrency, reaction mode, thread filtering, and checkpointing are all adjustable via CLI flags or the GUI's Advanced Options, see the CLI reference
  • Incremental migration, only migrate new messages since the last completed run
  • Pre-creation review, summary and confirmation before anything is created on Stoat
  • Migration report, human-readable migration_report.md with a fidelity score
  • Invite link, Ferry creates an invite to your new Stoat server when the migration finishes (on by default; turn off with --no-create-invite)
  • Failed-message recovery, messages that fail to send are tracked and automatically re-sent on the next --incremental run
  • Message splitting, messages over 2000 characters are split, not truncated
  • Migration lock, prevents two Ferry instances from targeting the same server
  • Circuit breaker, automatic backoff on API failures, no indefinite blocking
  • Rollback, undo a migration with one command (or one click in the GUI), deletes Ferry-created channels, roles, and emoji from the Stoat server
  • Post-migration stats, ferry stats <output-dir> prints a console-friendly summary (entity counts, fidelity score, per-channel breakdown, error preview, elapsed time) from a completed migration, useful for support, scripting, and quick sanity checks without re-opening the report

Beyond migration

Ferry ships several extra commands alongside migrate:

  • ferry validate, check an export before migrating: counts, warnings, and a time estimate. No network calls.
  • ferry check, after a migration, ask the live Stoat server whether every channel, role, category, emoji and message tail Ferry recorded is still there. Read-only.
  • ferry repair, re-send messages and re-create channels or roles that ferry check found missing. Refuses to touch renames or a rolled-back migration.
  • ferry retry, re-send the messages Ferry parked in the dead-letter queue after a failed send.
  • ferry probe, diagnose a live Stoat instance (upload size limits, rate limits, voice support, webhooks). Useful for self-hosters.
  • ferry build, create a fresh Stoat server from a preset template (gaming, community, or education) or a blueprint file.
  • ferry export-blueprint, turn a Discord export into a reusable server blueprint (structure only, no messages).
  • ferry tls-check, report which certificate authorities Ferry currently trusts, so you can diagnose an unable to get local issuer certificate error before touching proxy or antivirus settings.

See the CLI reference for all commands and options.


Detailed Guides


Contributing

We welcome contributions! See CONTRIBUTING.md.

Maintainers deploying the public intake service should follow the feedback service operations guide. It covers the isolated Personal Apps deployment, private storage, readiness, recovery, and smoke cleanup.


License

MIT


Sponsor

If Discord Ferry has helped you, sponsor Peter's open-source work.

Metadata

Release files for discord-ferry 2.41.30

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for discord-ferry 2.41.30
File Size Uploaded
discord_ferry-2.41.30.tar.gz 1.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for discord-ferry 2.41.30
File Interpreter ABI Platform
discord_ferry-2.41.30-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / discord_ferry-2.41.30.tar.gz

Download URL discord_ferry-2.41.30.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
a4f417220d948aeb6acf06f4df658b64a096d9c5e71f23a8587f47f7bff94a18
BLAKE2b-256 checksum
How to use checksums
926b939daeb33b1b1ab97c2a074f4420dd582f89dd8a25addc8cf0c02d5e3f48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / discord_ferry-2.41.30-py3-none-any.whl

Download URL discord_ferry-2.41.30-py3-none-any.whl
Size 342.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b3d77538a31e6d70009f390a1895c563a7b5719b9d27bedf42d89d9d96ae719
BLAKE2b-256 checksum
How to use checksums
9dd9dd04e3c06fc5f688147bb384dd4e95ceb466a919621df75f4e2175617f66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

2.43.9

2 release files

2.43.8

2 release files

2.43.7

2 release files

2.43.6

2 release files

2.43.5

2 release files

2.43.4

2 release files

2.43.3

2 release files

2.43.2

2 release files

2.43.1

2 release files

2.43.0

2 release files

2.42.2

2 release files

2.42.1

2 release files

2.42.0

2 release files

This release

2.41.30 This release

2 release files

2.37.3

2 release files

2.37.2

2 release files

2.37.1

2 release files

2.37.0

2 release files

2.36.0

2 release files

2.35.7

2 release files

2.35.6

2 release files

2.35.5

2 release files

2.35.4

2 release files

2.35.3

2 release files

2.35.2

2 release files

2.35.1

2 release files

2.35.0

2 release files

2.34.0

2 release files

2.33.0

2 release files

2.32.0

2 release files

2.31.0

2 release files

2.30.0

2 release files

2.29.0

2 release files

2.27.0

2 release files

2.26.0

2 release files

2.25.0

2 release files

2.24.0

2 release files

2.23.0

2 release files

2.22.0

2 release files

2.21.0

2 release files

2.20.0

2 release files

2.19.9

2 release files

2.19.8

2 release files

2.19.7

2 release files

2.19.6

2 release files

2.19.5

2 release files

2.19.4

2 release files

2.19.3

2 release files

2.19.2

2 release files

2.19.0

2 release files

2.17.0

2 release files

2.16.0

2 release files

2.15.0

2 release files

2.14.7

2 release files

2.14.5

2 release files

2.14.4

2 release files

2.14.3

2 release files

2.14.2

2 release files

2.14.1

2 release files

2.14.0

2 release files

2.9.0

2 release files

2.8.5

2 release files

2.8.4

2 release files

2.8.3

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

1 release file

2.7.1

2 release files

2.7.0

2 release files

2.6.17

2 release files

2.6.16

2 release files

2.6.15

2 release files

2.6.14

2 release files

2.6.13

2 release files

2.6.12

2 release files

2.6.11

2 release files

2.6.10

2 release files

2.6.9

2 release files

2.6.8

2 release files

2.6.7

2 release files

2.6.6

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.10

2 release files

2.2.9

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page