GoToSocial vs Mastodon
Pick GoToSocial if the instance is for you or a small group: one container on SQLite, a documented 1 GB target, ~435 MB measured idle, and you post from a Mastodon-API app because it ships no full web client; accept that it is still beta. Pick Mastodon if you want its own web app, the moderation and reporting tools a public community needs, and the server other Fediverse software aims to federate with, and budget for five services, a TLS reverse proxy and Elasticsearch for full-text search.
Side by side
GoToSocial and Mastodon are the two servers most people look at when they want their own Fediverse address instead of an account on someone else's instance. Both speak ActivityPub, both are AGPL-3.0, and both expose the Mastodon client API, so the same phone apps work against either one. The difference is weight and scope. Mastodon is the full-featured reference server with its own web app, built from five services. GoToSocial is a single Go binary aimed at small instances, and it ships no full web client of its own.
Before either: the domain is permanent
Pick the domain first, because neither server lets you change it later.
Mastodon's config docs say LOCAL_DOMAIN "cannot be safely changed later, as
changing it will cause remote servers to confuse your existing accounts with
entirely new ones", and reinstalling does not fix it. GoToSocial's config file
says of host: "DO NOT change this after your server has already run once, or
you will break things!" Its getting-started page adds that switching to a
different Fediverse server on the same domain is not supported either, so
choose the software and the domain together.
Both support a split setup, where handles read @you@example.com but the
server runs on social.example.com: WEB_DOMAIN in Mastodon, the account
domain in GoToSocial. In both cases it has to be decided before first start.
What you run
Mastodon v4.7.2's docker-compose.yml starts five services: PostgreSQL 14,
Redis 7, the Rails web process, the Node.js streaming server and sidekiq
for background jobs. The README lists Ruby 3.3+, PostgreSQL 14+, Redis 7.0+,
Node.js 22+ and FFmpeg 5.1+ for a source install. The web container binds to
127.0.0.1:3000 and the streaming API to 127.0.0.1:4000, so you need nginx
or Caddy in front with a TLS certificate. Full-text search needs Elasticsearch
on top; the docs say it "is strongly recommended to configure this feature",
and their example sizes Elasticsearch in gigabytes of heap.
GoToSocial is one container. The official Compose file runs the image with SQLite on a mounted directory, and the README says it has "no external dependencies apart from a database (or just use SQLite!)". It can request its own Let's Encrypt certificate, load one from disk, or sit behind a reverse proxy. PostgreSQL is supported too, but the docs warn there is no tooling to move between SQLite and Postgres, so the choice sticks. They describe SQLite as working "brilliantly for instances in the range of 1-30 users (or maybe more)".
Memory and disk
GoToSocial publishes a sizing guide. Its docs say to aim for "about 1GB of
memory" and 15-20 GB of storage, that "you may be able to get away with 512MB",
and that a small instance hovers "between 250MB and 350MB of RAM usage once the
internal caches are hydrated". We measured GoToSocial at ~435 MB idle on
our GCP e2-standard-2 test box (Ubuntu 26.04, 2026-09-29). Its docs note that
top-style readouts run higher than Go's in-use memory, because the runtime
returns memory to the OS slowly.
Mastodon does not publish a RAM requirement. Our 2 GB floor is an estimate
for the five containers, not a measurement, and it leaves no room for
Elasticsearch. Both servers cache remote media on disk. Mastodon's
tootctl media remove clears cached remote attachments older than 7 days by
default. GoToSocial cleans its media cache on its own schedule, which you can
tune. Either can put media in S3-compatible object storage.
The client side
This is the biggest practical difference for users.
Mastodon ships its own web interface, a React app with real-time timelines, plus the OAuth2 provider and REST and streaming APIs that the third-party app ecosystem is built on.
GoToSocial does not include a full web client. Its README says it "doesn't include an integrated client front-end (i.e., a web app)". It serves static profile and post pages, a settings panel, and the Mastodon-compatible API. You post from an app: the README names Tusky on Android, Pinafore in the browser and Feditext on Apple devices as tested. "Most apps that implement the Mastodon API should work" is its own wording, not a guarantee for every app.
Features and maturity
GoToSocial is beta software, in its own words: "many things are not yet implemented, and there are plenty of bugs". It says it federates cleanly with "many other Fediverse servers (not yet all)". What it adds is aimed at small, private instances:
- Reply controls through interaction policies, and local-only posts.
- Federation modes: blocklist (the default) or an experimental allowlist.
- Subscriptions to shared domain allow- and blocklists.
- OIDC login, TOTP two-factor, an opt-in RSS feed, Markdown posts, and per-user themes and custom CSS.
- Importing archived posts from a previous instance (since v0.18.0), as quiet copies that do not notify followers.
Mastodon is the compatibility baseline others aim for. GoToSocial's own README says it wants any server that "can federate nicely with Mastodon" to federate with GoToSocial too. Mastodon's README lists private posts, locked accounts, phrase filtering, muting, blocking and a reporting and moderation system. The admin docs cover scaling Sidekiq across queues and processes as an instance grows. GoToSocial's own README describes Mastodon as "actively developed, widely recognized, scaleable".
Both implement the ActivityPub Move activity, so you can migrate an account
from one to the other. GoToSocial's docs say only followers carry over. Posts
are a separate import, and there is a 7-day cooldown between moves.
Install
Both install snippets on this site are Docker Compose. GoToSocial's install
was tested on Ubuntu 26.04: fetch the Compose file, set GTS_HOST, give the
data directory to UID 1000, start it, and create your account with the
admin account create command. Mastodon's install has not been tested on this
site. It takes more steps: write .env.production with the secret keys,
generate VAPID keys, run db:setup, then add a TLS proxy, because the web
process forces HTTPS. We rate GoToSocial 2 out of 5 to deploy and Mastodon
3 out of 5.
Which to choose
Choose GoToSocial if the instance is for you or a small group, on a small VPS or a single-board computer, and you are happy posting from a Mastodon-API app. It is one container, SQLite by default, and upstream documents a 1 GB target. Accept that it is beta and that a few servers may not federate cleanly with it yet.
Choose Mastodon if you want the complete package: a full web app for users, the moderation and reporting tools a public community needs, and the server other Fediverse software aims to federate with. Budget for five services, a reverse proxy, and Elasticsearch if you want full-text search.
Choosing between Mastodon and GoToSocial
Coming from Mastodon, the reason to move is usually the footprint: a
single-user instance does not need Sidekiq, Redis and a Rails app. Test your
usual apps against GoToSocial first. Then set up the new account and use
Move. Only your followers move with it.
Common questions
GoToSocial vs Mastodon: which should I self-host?
Pick GoToSocial for a personal or small-group instance on a small VPS: one container, SQLite by default, and upstream documents about 1 GB of RAM as the target. You post from a Mastodon-API app, because GoToSocial ships no full web client. Pick Mastodon if you need its own web app, full moderation tools for a public community, and the server other Fediverse software aims to federate with, and can run five services behind a TLS reverse proxy.
Can I use Mastodon apps with GoToSocial?
Mostly, yes. GoToSocial implements the Mastodon client API, and its README names Tusky (Android), Pinafore (browser) and Feditext (iOS, iPadOS, macOS) as tested and working. It says most apps that implement the Mastodon API should work, which is not a guarantee for every app.
How much RAM does GoToSocial need compared to Mastodon?
GoToSocial's docs say about 1 GB of system memory, possibly 512 MB, with the server itself hovering between 250 MB and 350 MB for a small instance once caches warm up. We measured it at ~435 MB idle on our GCP e2-standard-2 test box on 2026-09-29. Mastodon publishes no RAM figure. Our 2 GB is an estimate for its five containers, before Elasticsearch.
Can I change my Mastodon or GoToSocial domain later?
No. Mastodon's docs say LOCAL_DOMAIN cannot be safely changed because remote servers will confuse existing accounts with new ones, and reinstalling does not fix it. GoToSocial's config says not to change host after the server has run once. Decide the domain, and any split between handle domain and server domain, before the first start.
Can I move my account from Mastodon to GoToSocial?
Yes. Both support the ActivityPub Move activity. GoToSocial's docs say only followers carry over, there is a 7-day cooldown between moves, and old posts can be imported separately as copies (since v0.18.0).
Paid link — we earn a commission if you shop through it.
Other comparisons with these apps
The multi-database web client from DBeaver vs. the PostgreSQL-only admin tool.
One conf.yml with an in-browser editor vs. YAML files and Docker label discovery.
The team LLM-app platform vs. the Python-component canvas.