TL;DR, Kurze Antwort
7 Min. LesezeitUpstream Mastodon setzt MAX_CHARS in einer einzigen Ruby-Datei auf 500, und ein Serverbetreiber, der diese Konstante ändert, ändert das Limit für alle auf diesem Server. Reale Server laufen mit 500, 1.000 und 11.000. Gezählt wird in Graphem-Clustern, ein Familien-Emoji kostet also 1, jede URL wird pauschal mit 23 Zeichen berechnet, egal wie lang sie ist, und das Feld für die Inhaltswarnung wird zur Summe addiert. Lies configuration.statuses.max_characters vom Endpunkt /api/v2/instance eines Servers, statt 500 anzunehmen.
Was ist das Mastodon Zeichenlimit?
Upstream Mastodon setzt das Mastodon Zeichenlimit auf 500 Graphem-Cluster, und jeder Serverbetreiber kann diese Zahl für seinen eigenen Server ändern. Der Wert steht in einer einzigen Ruby-Konstante, app/validators/status_length_validator.rb:
class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = 500
URL_PLACEHOLDER_CHARS = 23
URL_PLACEHOLDER = 'x' * 23Es gibt in Upstream Mastodon keine Admin-Einstellung, keine Umgebungsvariable und kein Webformular, das MAX_CHARS verschiebt. Ein Server mit einem längeren Limit läuft mit gepatchtem Code. Deshalb ist „das Mastodon Zeichenlimit“ eine Frage danach, von welchem Server du postest, und keine Frage nach Mastodon.
Wenn du darüber hinausgehst, hängt der Validator den Fehler aus dem Übersetzungsschlüssel statuses.over_character_limit an, der auf Englisch „character limit of %{max} exceeded“ lautet. Das %{max} wird aus dem Wert interpoliert, den MAX_CHARS auf diesem Server hält, die Fehlermeldung nennt dir also selbst die lokale Zahl.
Was verändert die Standardgrenze von 500 Zeichen?
Drei Dinge, in absteigender Häufigkeit.
Ein Fork verändert sie. Der Fork glitch-soc, den viele langjährige Server einsetzen, ersetzt die fest verdrahtete Konstante durch eine Umgebungsvariable:
MAX_CHARS = (ENV['MAX_TOOT_CHARS'] || 500).to_iEin Betreiber setzt MAX_TOOT_CHARS=11000 in seiner Umgebungsdatei, und der ganze Server postet mit 11.000. Upstream Mastodon hat diese Variable nie übernommen, auf einer unveränderten Installation gibt es denselben Schalter also nicht.
Ein Patch verändert sie. Betreiber von unverändertem Mastodon editieren die Konstante direkt und bauen neu. Das ist die älteste Methode, und sie hält sich, weil die Änderung eine Zeile ist.
Ein Versionssprung verändert sie nicht. Mastodon liefert 500 seit den frühen Releases des Projekts als Upstream-Standard aus, und die Zahl hat sich durch die gesamte 4.x-Reihe nicht bewegt.
Der Grund, warum es keinen Admin-Schalter gibt, lohnt das Verständnis, denn er erklärt, warum die Lage nicht aufgeräumt wird. Ein Mastodon-Server besitzt die Beiträge nicht, die er anzeigt. Die meisten erhält er von anderen Servern, und er hat keinen Mechanismus, einen davon wegen Überlänge abzulehnen. Mastodons Hauptentwickler hat Patches abgelehnt, die das Limit konfigurierbar machen, mit dem Argument, dass die Oberfläche auf eine einzige Zahl hin gestaltet ist und der Grundumfang der Funktionen auf jedem Server gleich sein sollte. Die Zahl im Quellcode zu halten macht ihre Anhebung zu einer bewussten Handlung von jemandem, der editiert und neu ausrollt.

Wie unterschiedlich sind reale Mastodon-Server?
Sehr. Diese Zahlen stammen am 12. September 2026 vom jeweils eigenen /api/v2/instance-Endpunkt der Server.
| Server | Softwareversion | max_characters | characters_reserved_per_url | max_media_attachments |
|---|---|---|---|---|
| mastodon.social | 4.8.0-alpha.2 | 500 | 23 | 4 |
| mastodon.online | 4.8.0-nightly | 500 | 23 | 4 |
| fosstodon.org | 4.7.1 | 500 | 23 | 4 |
| mas.to | 4.7.1 | 1000 | 23 | 4 |
| infosec.exchange | 4.8.0-alpha.2+glitch | 11000 | 23 | 4 |
| todon.eu | 4.7.1+todon | 13120 | 23 | 4 |
Das Suffix +glitch bei infosec.exchange ist das verräterische Zeichen. Der Server läuft mit dem Fork, also greift MAX_TOOT_CHARS, und sein Limit ist 22-mal so hoch wie das des Flaggschiff-Servers. Zwei Server auf demselben Release 4.7.1 melden 500 beziehungsweise 1.000, was der deutlichste Beleg dafür ist, dass die Versionsnummer nichts über das Limit aussagt.
Eine Spalte bewegt sich nicht. characters_reserved_per_url steht überall auf 23, weil URL_PLACEHOLDER_CHARS in derselben Datei wie MAX_CHARS sitzt und niemand sich die Mühe macht, das zu patchen. max_media_attachments ebenso wenig, festgelegt durch Status::MEDIA_ATTACHMENTS_LIMIT = 4 im Status-Modell.

Was zählt auf Mastodon als Zeichen?
Der Validator zählt Graphem-Cluster, keine Bytes und keine Codepunkte:
AdaptlyPost
7-Tage-Testversion starten
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
def countable_length(str)
str.each_grapheme_cluster.size
endEin Graphem-Cluster ist das, was ein Leser als ein Zeichen sieht. Das vierköpfige Familien-Emoji besteht aus sieben Codepunkten und 25 UTF-8-Bytes, und Mastodon berechnet dir dafür 1. Das ist das Gegenteil davon, wie Threads Emojis gegen sein eigenes 500er-Limit zählt, wo Meta jedes Emoji nach seiner UTF-8-Byte-Länge abrechnet und dasselbe Familien-Emoji 25 kostet. Zwei Plattformen, dieselbe Schlagzahl, 24 Zeichen Unterschied bei einem Emoji.
Vor dem Zählen schreibt der Validator zwei Arten von Entität um.
Jede URL wird durch URL_PLACEHOLDER ersetzt, das buchstäblich aus 23 x-Zeichen besteht. Ein drei Zeichen langer Link und eine 400 Zeichen lange Tracking-URL kosten beide 23. Einen Link vor dem Posten zu kürzen bringt dir auf Mastodon nichts.
Jede Erwähnung wird auf ihren lokalen Teil gekürzt. Die Umschreibung lautet "@#{entity[:screen_name].split('@').first}", also wird @someone@long.server.example.org als @someone gezählt, acht Zeichen statt 32. Eine Antwort in einen Thread mit sechs entfernten Teilnehmern kostet weit weniger, als der sichtbare Text vermuten lässt.
Die Inhaltswarnung ist nicht gratis. combined_text hängt das Spoiler-Feld vor dem Zählen an den umgeschriebenen Text:
def combined_text(status)
[status.spoiler_text, countable_text(status.text)].join
endEine 60 Zeichen lange Inhaltswarnung lässt auf einem Standardserver 440 Zeichen für den Beitrag. Nichts im Editor sagt das.
Eine weitere Regel entscheidet, wer überhaupt geprüft wird. Der Validator beginnt mit return unless status.local? && !status.reblog?, läuft also nur bei Beiträgen, die auf diesem Server erstellt wurden. Ein 9.000 Zeichen langer Beitrag, der von einem glitch-soc-Server hereinföderiert, wird auf einem 500-Zeichen-Server vollständig gespeichert und angezeigt, weil die Längenregel beim Verfassen greift und nie beim Empfang. Diese Asymmetrie gehört dazu, wie das Fediverse Beiträge zwischen Servern weitergibt, und ist kein Fehler eines einzelnen Servers.
Wie liest du das Limit eines Servers vor dem Posten aus?
Frag den Server. Mastodons Instance-Serializer veröffentlicht die aktiven Konstanten, Raten ist also nicht nötig:
"statuses": {
"max_characters": 500,
"max_media_attachments": 4,
"characters_reserved_per_url": 23
}Dieser Block kommt von GET /api/v2/instance unter configuration, und der Serializer baut ihn direkt aus StatusLengthValidator::MAX_CHARS, Status::MEDIA_ATTACHMENTS_LIMIT und StatusLengthValidator::URL_PLACEHOLDER_CHARS. Was auch immer ein Betreiber gepatcht hat, dieser Endpunkt meldet es.
Jedes Werkzeug, das auf mehr als einen Server postet, sollte das beim Verbinden lesen und pro Server zwischenspeichern, dann Grapheme statt Stringlänge zählen, für jede URL 23 einsetzen und das Feld der Inhaltswarnung zur Summe addieren. Ein Zähler, der in JavaScript text.length macht, liegt gleich dreifach falsch, denn er zerlegt Emojis in Surrogatpaare, berechnet URLs den vollen Preis und ignoriert das Spoiler-Feld.
Die Fehler ziehen nicht alle in dieselbe Richtung, und genau das macht sie schwer bemerkbar. Graphem-Zählung und der URL-Preis von 23 Zeichen arbeiten beide für dich, ein naiver Zähler, der 490 meldet, kann also ein Beitrag sein, den der Server bei 430 annimmt. Die Inhaltswarnung arbeitet gegen dich, derselbe naive Zähler mit 490 für den Text eines Beitrags, der eine 60 Zeichen lange Warnung trägt, ist also ein Beitrag, den der Server bei 550 ablehnt. max_characters einmal pro Server abzurufen und so zu zählen, wie der Validator zählt, beseitigt die ganze Fehlerklasse, und /api/v2/instance braucht kein Zugriffstoken, es ist also nichts zu organisieren, bevor du fragen kannst.
Das ist dieselbe Fehlerklasse wie die Byte-Offsets, die Bluesky in den Facets eines Beitrags verlangt, wo der Text, den du siehst, und der Text, den das Protokoll misst, unterschiedlich indexiert sind. Wenn du die beiden Netzwerke gegeneinander abwägst, gehören die Längenregeln zu den schärfsten Unterschieden im Vergleich von Mastodon und Bluesky.
Häufig gestellte Fragen
Liegt das Mastodon Zeichenlimit bei 500 oder bei 5.000?
Upstream Mastodon liefert 500 aus. Server mit dem Fork glitch-soc legen ihren eigenen Wert über die Umgebungsvariable MAX_TOOT_CHARS fest, und Werte von 1.000, 5.000 und 11.000 sind heute alle im Einsatz. Prüfe /api/v2/instance für den Server, von dem aus du postest.
Kann ein Admin das Zeichenlimit im Mastodon-Dashboard ändern?
Nein. In der Admin-Oberfläche gibt es keine Einstellung dafür. Upstream verlangt, MAX_CHARS in app/validators/status_length_validator.rb zu editieren und neu zu bauen; glitch-soc liest beim Start die Umgebungsvariable MAX_TOOT_CHARS.
Wie viele Zeichen kostet ein Link auf Mastodon?
Genau 23, festgelegt durch URL_PLACEHOLDER_CHARS. Der Validator tauscht vor dem Zählen jede erkannte URL gegen einen 23 Zeichen langen Platzhalter, die Linklänge hat also keine Auswirkung auf dein verbleibendes Budget.
AdaptlyPost
7-Tage-Testversion starten
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
Zählt die Inhaltswarnung zum Limit?
Ja. Die Methode combined_text hängt den Spoiler-Text an den Beitragstext, bevor gezählt wird, eine lange Inhaltswarnung frisst also direkt von den Zeichen, die für den Beitrag zur Verfügung stehen.
Zählen Emojis auf Mastodon als ein Zeichen?
Ja. Gezählt wird über Graphem-Cluster, ein Emoji mit Hautton oder ein mehrköpfiges Familien-Emoji kostet also 1, egal aus wie vielen Codepunkten oder Bytes es besteht.
Was passiert, wenn ein langer Beitrag zu einem Server mit 500 Zeichen föderiert?
Er kommt an und wird vollständig angezeigt. Der Längenvalidator läuft nur bei lokal verfassten Beiträgen, ein Server mit einem Limit von 500 Zeichen speichert und rendert also weiterhin einen 11.000 Zeichen langen Beitrag, den er von anderswo empfangen hat.
Warum liefert ein JavaScript-Zeichenzähler ein falsches Ergebnis für Mastodon-Beiträge?
Ein Zähler, der text.length in JavaScript verwendet, zerlegt ein mehrköpfiges Emoji in seine einzelnen Surrogatpaare, berechnet für jede URL die volle Länge statt der festen 23 Zeichen, die Mastodon ansetzt, und ignoriert das Feld für die Inhaltswarnung komplett. Mastodon zählt Graphem-Cluster, ersetzt jede URL durch einen Platzhalter von 23 Zeichen und addiert den Text der Inhaltswarnung vor der Prüfung. Die beiden Zählweisen können in beide Richtungen abweichen, sodass ein naiver Zähler bei 490 sowohl zu einem bei 430 akzeptierten als auch zu einem bei 550 abgelehnten Beitrag gehören kann.
Wie viel günstiger ist eine Erwähnung auf einem entfernten Server, als es aussieht?
Mastodon kürzt jede Erwähnung vor dem Zählen auf ihren lokalen Teil, sodass @someone@long.server.example.org acht Zeichen kostet statt der 32 sichtbaren Zeichen. Eine Antwort in einem Thread mit mehreren Teilnehmern auf entfernten Servern kann im Editor lang wirken, kostet gegen das Limit aber deutlich weniger, als der angezeigte Text vermuten lässt.
Wie hoch geht das Zeichenlimit auf realen Mastodon-Servern?
todon.eu meldet über seinen /api/v2/instance-Endpunkt 13.120 Zeichen und infosec.exchange 11.000, gegenüber 500 auf mastodon.social. Beide erreichen diese Werte, weil sie einen Fork mit dem Limit in der Umgebung betreiben, nicht durch eine Option, die das unveränderte Mastodon bietet.
Warum bietet Mastodon kein Dropdown-Menü pro Server für das Zeichenlimit an?
Mastodons Hauptentwickler hat Patches zurückgewiesen, die das Limit konfigurierbar machen, mit der Begründung, dass die Oberfläche auf eine einzige Zahl hin gestaltet ist und der Grundumfang der Funktionen auf jedem Server gleich sein sollte. Die Föderation verschärft das, denn der Längenvalidator läuft nur bei lokal verfassten Beiträgen, und jeder andere Server speichert und rendert, was bei ihm ankommt. Betreiber, die ein höheres Limit wollen, editieren die Konstante selbst oder betreiben einen Fork wie glitch-soc.
Setze das mit AdaptlyPost in die Praxis um
War dieser Artikel hilfreich?
Teilen Sie uns Ihre Meinung mit!
Sieh uns öfter bei Google
Ein Klick macht AdaptlyPost zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in deinen Top-Meldungen, im KI-Modus und in den KI-Übersichten.
Bevor Sie gehen...
AdaptlyPost
Planen Sie Ihre Inhalte für alle Plattformen
Verwalten Sie alle Ihre Social-Media-Konten an einem Ort mit AdaptlyPost.
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
Verwandte Glossarbegriffe


Warum das Bluesky-Bildgrößenlimit bei 2,000,000 Bytes liegt
Das Bluesky-Bildgrößenlimit liegt bei 2,000,000 Bytes pro Beitragsbild, gesetzt per maxSize im images-Lexicon. Avatare und Banner enden bei 1,000,000 Bytes.


Was nach 24 Stunden mit einem Threads Ghost Post passiert
Ein Threads Ghost Post ist ein Textbeitrag, den Meta nach 24 Stunden archiviert. Antworten landen wahlweise im Postfach, die API setzt is_ghost_post=true.


Was jeder IPTC Digital Source Type Code bedeutet
Jeder IPTC Digital Source Type QCode verständlich erklärt: 17 aktive Begriffe, 3 zurückgezogene und was Plattformen nach dem Upload mit dem Wert machen.
Verwandte Artikel


Warum das Threads Zeichenlimit Emojis als UTF-8-Bytes zählt
Bei 500 Zeichen ist Schluss, doch das Threads Zeichenlimit rechnet jedes Emoji in UTF-8-Bytes ab: Ein Familien-Emoji kostet 25. So zählst du korrekt.


Warum das TikTok-Caption-Zeichenlimit in UTF-16-Runen gemessen wird
Das TikTok-Caption-Zeichenlimit liegt bei 2200 UTF-16-Runen für Videos und 90 für einen Foto-Titel. Runen sind keine Zeichen, ein Emoji kann elf kosten.


C2PA einfach erklärt: Was sind Content Credentials?
C2PA Manifests erklärt: Was sind Content Credentials, was eine Claim Signature beweist und welche Netzwerke nach dem Upload etwas zum Manifest sagen.

