Limity znaków i słów 2026 — Twitter, SMS, SEO, Instagram
Limit znaków to maksymalna liczba punktów kodowych (codepoint) Unicode, jaką platforma akceptuje w pojedynczym polu: 280 dla wpisu na Twitterze, 160 dla jednosegmentowego SMS w GSM-7, około 160 dla meta opisu Google przed obcięciem. Liczba, która ma znaczenie, zależy od tego, gdzie publikujesz oraz czy tekst zawiera emoji, cudzysłowy drukarskie albo znaki CJK. Każdy z tych elementów zmienia rachunek.
Ten przewodnik jest dla autorów treści w mediach społecznościowych, specjalistów SEO, copywriterów marketingowych, nadawców SMS rozliczanych za segment oraz programistów piszących walidację, która musi odpowiadać temu, co Twitter, Instagram lub bramki SMS faktycznie liczą. Przejdź do tabeli szybkiej referencji, aby zobaczyć ściągę 25 platform, albo sprawdź szkic na żywo na sześciu największych platformach w Liczniku słów. Paski postępu zmieniają kolor na czerwony w momencie przekroczenia limitu.
Tabela szybkiej referencji — limity znaków i słów na każdej platformie
Poniższa tabela obejmuje ponad 30 pól, z którymi autorzy i programiści spotykają się najczęściej. „Twardy limit” to pułap egzekwowany przez platformę; „Widoczne / nad linią zwijania” to tekst widoczny przed punktem obcięcia; „Słodki punkt” to empiryczny zakres, w którym treść osiąga najlepsze wyniki.
| Platforma | Twardy limit | Widoczne / nad linią zwijania | Słodki punkt | Liczy emoji jako |
|---|---|---|---|---|
| Wpis Twitter / X | 280 znaków | 280 | 70-100 znaków | 1 codepoint |
| Bio Twitter / X | 160 znaków | 160 | — | 1 codepoint |
| Nazwa wyświetlana Twitter / X | 50 znaków | 50 | — | 1 codepoint |
| X Premium long-form | 25 000 znaków | — | — | 1 codepoint |
| Podpis Instagram | 2200 znaków | pierwsze 125 (potem „więcej”) | <125 dla haczyka | 1 codepoint |
| Bio Instagram | 150 znaków | 150 | — | 1 codepoint |
| Hashtagi Instagram | maks. 30 | — | 5-10 | — |
| Wpis LinkedIn | 3000 znaków | pierwsze 210 (potem „zobacz więcej”) | <1300 | 1 codepoint |
| Artykuł LinkedIn | 110 000 znaków | — | — | 1 codepoint |
| Nagłówek LinkedIn | 220 znaków | 220 | — | 1 codepoint |
| Wpis Facebook | 63 206 znaków | ~477 na desktopie / ~125 na mobile | <80 dla zasięgu organicznego | 1 codepoint |
| Podpis TikTok | 2200 znaków | pierwsze ~100 | <150 | 1 codepoint |
| Tytuł YouTube | 100 znaków | 70 (wyszukiwanie) | <60 | 1 codepoint |
| Opis YouTube | 5000 znaków | pierwsze 100-150 nad linią zwijania | pierwsze 150 dla haczyka | 1 codepoint |
| Komentarz YouTube | 10 000 znaków | — | — | 1 codepoint |
| Tytuł Reddit | 300 znaków | — | <60 (zależnie od subreddita) | 1 codepoint |
| Komentarz Reddit | 10 000 znaków | — | — | 1 codepoint |
| Wiadomość Discord | 2000 znaków | 2000 | — | 1 codepoint |
| Opis embedu Discord | 4096 znaków | — | — | 1 codepoint |
| Wiadomość Slack | 40 000 znaków | — | <2000 dla czytelności | 1 codepoint |
| Opis pinu Pinterest | 500 znaków | pierwsze 50-60 | <125 | 1 codepoint |
| Toot Mastodon | 500 znaków (konfigurowalne) | 500 | — | 1 codepoint |
| Wpis Bluesky | 300 znaków | 300 | — | 1 grapheme cluster |
| Wpis Threads | 500 znaków | 500 | — | 1 codepoint |
| Meta opis SEO (Google) | ~160 znaków desktop / ~120 mobile | 150-160 | 150-160 | 1 codepoint |
| Tytuł strony SEO (Google) | ~60 znaków desktop / ~50 mobile | 50-60 | 50-60 | 1 codepoint |
| Opis Open Graph | ~200 znaków przed obcięciem przez LinkedIn/FB | 150-200 | 150-200 | 1 codepoint |
| Opis Twitter Card | maks. 200 znaków | 200 | 150-200 | 1 codepoint |
| Pojedynczy segment SMS (GSM-7) | 160 znaków | — | — | specjalne — patrz niżej |
| Pojedynczy segment SMS (UCS-2 / emoji) | 70 znaków | — | — | 1 codepoint |
| Tekst wiadomości WhatsApp | 65 536 znaków | — | — | 1 codepoint |
| Temat e-maila | brak limitu platformy | ~60 desktop / ~30 mobile | <50 | 1 codepoint |
| Nagłówek Google Ads | 30 znaków × 15 nagłówków | po 30 | 30 | 1 codepoint |
| Opis Google Ads | 90 znaków × 4 opisy | po 90 | 90 | 1 codepoint |
| Tytuł App Store | 30 znaków | 30 | 30 | 1 codepoint |
| Podtytuł App Store | 30 znaków | 30 | 30 | 1 codepoint |
| Opis App Store | 4000 znaków | pierwsze 252 nad linią zwijania | 252 dla haczyka | 1 codepoint |
| Krótki opis Play Store | 80 znaków | 80 | 80 | 1 codepoint |
| Długi opis Play Store | 4000 znaków | pierwsze 80 nad linią zwijania | 80 dla haczyka | 1 codepoint |
Treść powyżej linii „słodkiego punktu” zwykle zostaje obcięta, obniżona w rankingu albo wykadrowana z widocznej karty. X Premium long-form i Mastodon (konfigurowalny per instancja) to rzadkie wyjątki, w których można pisać powyżej 500 znaków bez kary. Każda powyższa liczba (poza przypadkami, w których obowiązują reguły SMS) to liczenie po punktach kodowych Unicode: jedno emoji kosztuje 1 znak, nie 2. Aby zweryfikować szkic naraz względem sześciu najczęstszych limitów, wklej go w Liczniku słów. Paski postępu wychwytują tekst po przekroczeniu limitu, zanim klikniesz publikuj.
Jak naprawdę liczy się znaki (punkty kodowe Unicode vs UTF-16)
Trzy różne narzędzia mogą zwrócić trzy różne liczby znaków dla tego samego ciągu. „Znak” to nie jedna rzecz: może oznaczać punkt kodowy (codepoint) Unicode, jednostkę kodową (code unit) UTF-16 lub klaster graficzny (grapheme cluster), a każda platforma wybiera jedno z tych pojęć.
Czym jest „znak” — codepoint vs code unit vs grapheme
Codepoint (punkt kodowy) to wartość skalarna Unicode: dowolna liczba całkowita od U+0000 do U+10FFFF, którą Unicode przypisał do znaku albo oznaczył jako zarezerwowaną. Code unit (jednostka kodowa) to najmniejszy element kodowania; UTF-16 używa 16-bitowych jednostek kodowych, UTF-8 używa 8-bitowych. Grapheme cluster (klaster graficzny) to to, co człowiek postrzega jako jeden widoczny znak: czasem jeden codepoint, czasem codepoint bazowy plus znaki łączące, czasem sekwencja z zero-width joinerem, jak emoji rodziny 👨👩👧👦 (siedem codepointów połączonych w jeden widoczny glif).
Dla ciągu "a🌍👨👩👧" trzy metody liczenia dają różne wyniki:
| Metoda liczenia | Wynik | Stosowana przez |
|---|---|---|
Jednostki kodowe UTF-16 (JS string.length) | 10 | Naiwny kod JavaScript |
| Punkty kodowe Unicode | 6 | Twitter, Instagram, bramki SMS |
| Klastry graficzne | 3 | Bluesky, czytniki ekranu, edytory tekstu |
Dlaczego string.length kłamie w sprawie emoji
JavaScript przechowuje ciągi wewnętrznie jako UTF-16. Każdy codepoint powyżej U+FFFF (wszystkie emoji, wszystkie znaki z płaszczyzn astralnych) jest kodowany jako para zastępcza (surrogate pair), czyli dwie 16-bitowe jednostki kodowe. Właściwość .length zgłasza obie te jednostki, nie jeden znak.
"🌍".length // 2 (UTF-16 code units)
[..."🌍"].length // 1 (codepoints — what Twitter/SMS counts)
"🌍".match(/./gu).length // 1 (codepoints via regex with /u flag)
Operator rozproszenia (spread) oraz flaga regex /u obie iterują po codepointach, co odpowiada temu, jak Twitter, Instagram i bramki SMS mierzą tekst względem swoich limitów. Funkcja walidująca używająca surowego .length odrzuci tweety, które są w rzeczywistości poniżej limitu, albo (jeszcze gorzej) przepuści wiadomości, które późniejszy system odrzuci.
Co z CJK i znakami łączącymi
Ideogramy chińskie, japońskie i koreańskie są każdy pojedynczym codepointem i liczą się jako jeden znak na każdej platformie. Drogo wychodzą jednak w SMS-ach: każdy znak spoza GSM-7 przełącza całą wiadomość na kodowanie UCS-2, obniżając limit segmentu ze 160 do 70 (omówione w następnej sekcji).
Znaki łączące zachowują się inaczej. Akcentowane á zapisane jako á to jeden codepoint; to samo á zapisane jako a + ́ (łączący akcent ostry) to dwa codepointy, ale jeden grapheme cluster. Większość platform liczy po codepointach, więc druga forma kosztuje jeden znak więcej. Bluesky jest widocznym wyjątkiem: liczy klastry graficzne, więc obie formy kosztują 1.
Liczenie w różnych językach — szybka referencja
// JavaScript
[...str].length // codepoints
Array.from(str).length // codepoints
// Python 3 — len() is codepoint by default
len(s)
// Go — utf8 package
utf8.RuneCountInString(s)
// Rust — chars() iterates codepoints
s.chars().count()
// Java — codePointCount
s.codePointCount(0, s.length())
Dla porównania koder Base64 przypomina o odwrotnym kierunku: gdy tekst jest kodowany do Base64 w celu transmisji, każde 3 bajty wejścia UTF-8 stają się 4 znakami ASCII na wyjściu, więc długość zakodowana zależy od liczby bajtów, nie od liczby codepointów. Wklej pojedyncze emoji i zobacz, jak wyjście Base64 rozszerza się do 8 znaków. To samo emoji, które kosztuje 1 znak na Twitterze, zajmuje 4 bajty w UTF-8.
Aby zobaczyć liczbę codepointów (liczbę, którą Twitter faktycznie mierzy) na dowolnym szkicu, Licznik słów jest domyślnie poprawny wobec Unicode.
Limit znaków SMS — GSM-7, UCS-2 i wiadomości wieloczęściowe
SMS to jedyny duży kanał, w którym dodanie jednego emoji może dosłownie podwoić rachunek. Odpowiada za to kodowanie, a matematyka pozostaje taka sama od 1985 roku.
Skąd bierze się 160 — historia GSM-7
Standard GSM-03.38 z 1985 roku ustalił payload SMS na 140 bajtów. Przy 7-bitowym kodowaniu znaków 140 bajtów mieści 1120 bitów ÷ 7 = 160 znaków. Stąd limit znaków SMS wynoszący 160. Zestaw znaków GSM-7 obejmuje 128 znaków bazowych plus 10-znakowe rozszerzenie (pokrywające { } [ ] | \ ~ ^ € oraz wysuw strony). W ramach tego zestawu otrzymujesz pełny budżet 160 znaków na segment.
Znaki, które wychodzą poza GSM-7 i wymuszają przełączenie:
- Wszystkie emoji
- Cudzysłowy drukarskie / typograficzne (
""''); uwaga, to nie to samo, co proste cudzysłowy ASCII"' - Większość akcentowanych liter łacińskich poza 35 znajdującymi się w GSM-7 (
é á ñ ü øitp.; GSM-7 zawiera tylkoä ö å æ ø à è ì ò ùi kilka innych) - Pełnoszerokościowa interpunkcja, znaki CJK, arabski, hebrajski, greckie małe litery, cyrylica
- Backtick
`i tylda~(tylda jest w tablicy rozszerzenia GSM-7, więc kosztuje 2 z 160 znaków)
Pułapka UCS-2 — jedno emoji zrzuca cię ze 160 do 70
W chwili, gdy pojedynczy znak spoza GSM-7 pojawi się gdziekolwiek w wiadomości, cała wiadomość przełącza się na kodowanie UCS-2. UCS-2 używa 16 bitów na znak, więc 140 bajtów ÷ 2 = 70 znaków na segment. Kilka przykładów z życia:
"Hello, your code is 12345" → 26 chars, GSM-7, 1 segment
"Hello, your code is 12345 ✓" → 28 chars, GSM-7 (✓ in extension), 1 segment
"Hello, your code is 12345 ✅" → 28 chars, UCS-2 (emoji), 1 segment (under 70)
"Hello, "your" code is 12345 ✅" → smart quotes + emoji → UCS-2
"Hi 你好" → CJK → UCS-2, 1 segment (5 chars)
Ostatni przykład „Hi 你好” jest pułapką: to tylko 5 znaków, ale konsumuje cennik UCS-2 i kolejne 65 znaków zmieści się w jednym segmencie, a potem zacznie się segment 2.
Wieloczęściowe segmenty SMS (konkatenacja)
Gdy przekroczysz 160 (GSM-7) lub 70 (UCS-2), wiadomość dzieli się na wiele segmentów. Każdy segment niesie 7-znakowy User Data Header (UDH) używany do ponownego składania, więc dostępny payload na segment spada:
- GSM-7 wieloczęściowy: 153 znaki na segment
- UCS-2 wieloczęściowy: 67 znaków na segment
Odbierający telefon składa segmenty z powrotem niewidocznie dla odbiorcy, ale rozliczenie jest za segment, nie za wiadomość. Wiadomość GSM-7 o długości 161 znaków kosztuje 2 segmenty. Wiadomość GSM-7 o długości 1000 znaków kosztuje 7 segmentów (153 × 6 = 918, 7. segment niesie ostatnie 82).
Matematyka kosztu — gdy jedno emoji podwaja rachunek
Rozważ 80-znakową marketingową wiadomość tekstową:
- Czysty tekst: 80 znaków → GSM-7 → 1 segment za cenę X
- Dodaj jedno emoji: 80 znaków → UCS-2 → 80 > 70 → 2 segmenty za cenę 2X
Podwojenie rachunku przez jedno emoji to nie hipoteza, a efekt, który skaluje się liniowo. Kampania 100 000 wiadomości po 0,0075 USD za segment kosztuje 750 USD w GSM-7 vs 1500 USD w UCS-2, czyli emoji za 750 USD. Każdy duży dostawca SMS (Twilio, Bandwidth, AWS SNS, MessageBird, Vonage) rozlicza w ten sposób. Reguły kodowania to standard GSM, nie polityka dostawcy. Głęboka historia kompromisów kodowania na poziomie bajtów (oraz dlaczego ASCII, UTF-8 i UCS-2 w ogóle istnieją jako osobne standardy) została opisana w Understanding Base64, gdzie ta sama rodzina problemu „bity na znaki” zastosowana jest do e-maila zamiast do SMS-a.
Jak utrzymać wiadomości w GSM-7
- Używaj prostych cudzysłowów ASCII
"', nie cudzysłowów drukarskich - Używaj łącznika ASCII
-, nie pauzy—ani półpauzy– - Pisz
(c)i(R), a nie©i® - Unikaj emoji, chyba że budżet kampanii uwzględnia koszt UCS-2
- Konsole dostawców (Twilio, Bandwidth, MessageBird) pokazują „encoding: GSM-7” lub „UCS-2” obok podglądu; zweryfikuj przed wysyłką
Najszybsza kontrola zdrowego rozsądku w trakcie pisania to pasek postępu SMS w Liczniku słów, który raportuje względem bazowych 160 znaków. Jeśli tekst wyzwoli UCS-2, podziel mentalnie liczbę znaków przez 2,29, aby oszacować liczbę segmentów według reguły 70 znaków.
Limity SEO — meta opis, tag tytułu, OG, Twitter Card
Limity znaków w SEO są bardziej miękkie niż limity platform: Google nie odrzuci strony, jeśli meta opis osiągnie 300 znaków, ale praktyczne reguły obcinania mają znaczenie dla współczynnika klikalności (CTR). Oto liczby, które nadal obowiązują w 2026 roku.
Meta opis — słodki punkt 150-160 znaków
Wyniki wyszukiwania Google na desktopie obcinają meta opis około 155-165 znaków; mobile tnie gdzieś między 100 a 120. Dokładny punkt obcięcia różni się, ponieważ Google mierzy piksele wyświetlania, nie znaki. Opis pełen glifów W i M trafia na piksel obcięcia wcześniej niż opis pełen i i l.
Reguły do zastosowania w pisaniu:
- Celuj w 150-160 znaków łącznie
- Umieść kluczowy przekaz w pierwszych 120 znakach (bezpiecznie dla mobile)
- Rozpocznij od słowa kluczowego meta description character limit dla strony w pierwszych 30 znakach
- Zakończ CTA w ostatnich 30 znakach, żeby pozostało czytelne nawet, gdy desktop tnie środek
W latach 2017-2018 Google na krótko rozszerzył wyświetlanie meta opisu do 320 znaków, a całe pokolenie poradników SEO nadal podaje tę liczbę. Google wrócił do 160 w połowie 2018 roku. Pisanie powyżej 200 znaków dzisiaj jedynie ukrywa drugą połowę.
Inny tryb porażki: opisy poniżej 120 znaków często bywają w całości zastępowane. Google decyduje, że dany opis nie obsługuje w pełni zapytania, i pobiera inny fragment z treści strony, więc kontrola nad CTR znika bez ostrzeżenia.
Tag tytułu — 60 desktop, 50 mobile
Tagi tytułu obcinają się w okolicy 60 znaków na desktopie i 50 na mobile. To samo obcinanie pikselowe co przy opisach, to samo zastrzeżenie dotyczące szerokich glifów.
Słodki punkt: 50-60 znaków, ze słowem kluczowym docelowym w pierwszych 30, żeby przetrwało dowolne obcięcie. Sufiksy marki w stylu long-tail (| Brand Name) należą na końcu, gdzie obcięcie boli najmniej.
Szerokość pikselowa vs liczenie znaków — rzeczywista reguła Google
Kontener opisu w SERP-ach Google ma na desktopie szerokość około 920 pikseli. Średnia szerokość znaku to około 6,5 piksela, co daje empiryczny cel 140-160 znaków. Ale rozrzut na znak jest duży: i renderuje się przy około 3 pikselach, M przy około 11. Opis pisany kapitalikami („NAJLEPSZE WIDŻETY NA ZIMOWE WESELA”) obcina się znacznie wcześniej niż jego odpowiednik pisany małymi literami.
Podglądy przed publikacją wykorzystujące symulatory SERP z dokładnością do piksela są pewniejsze niż liczniki znaków dla kopii SEO.
Opis OG i Twitter Card
Pole og:description z protokołu Open Graph to to, co Facebook, LinkedIn, Slack i Discord renderują pod podglądem udostępnionego linku. Limity wyświetlania różnią się między platformami: większość obcina około 200 znaków, niektóre rozciągają do 300. Pole Twitter Card twitter:description jest sztywno ograniczone do 200 znaków w parserze Twittera.
Rozsądne wartości domyślne:
- 150-200 znaków zarówno dla OG, jak i Twitter Card
- Mogą zgadzać się z meta opisem, ale OG może być nieco dłuższy, bo długość OG nie wpływa na ranking wyszukiwania
- Zwaliduj wybory dotyczące danych strukturalnych (zwłaszcza to, co przez pomyłkę trafia do OG), korzystając ze wzorców w Security Best Practices, gdzie nieufne metadane OG są częstym wektorem phishingu
Co naprawdę znaczy „brak limitu znaków”
Tagi H1, treść główna i slugi URL nie mają limitu znaków egzekwowanego przez SEO platformy, ale miękkie limity nadal obowiązują:
- H1 > 70 znaków łamie hierarchię wizualną i czytelność przy skanowaniu wzrokiem
- Slugi URL są technicznie nieograniczone; Google wyświetla około 90 znaków w SERP, wszystko ponad to jest kosmetyczne
- Treść główna nie ma limitu długości, ale Google ocenia treść pomocną wyżej niż wypełniacz; sama liczba słów nie jest sygnałem rankingowym
Licznik słów śledzi zarówno meta opis (160), jak i tag tytułu (60) na żywo w trakcie pisania, z paskami postępu zmieniającymi kolor na bursztynowy i czerwony, gdy zbliżasz się do piksela obcięcia.
Platformy społecznościowe — Twitter/X, Instagram, LinkedIn, Facebook i nie tylko
Sufit znaków każdej platformy ma swoją historię oraz słodki punkt poniżej twardego limitu, w którym treść faktycznie osiąga wyniki.
Twitter / X — 280, Premium 25 000, reguła podmiany URL
Standardowy limit znaków Twittera wynosi 280 znaków, podwojony ze 140 w listopadzie 2017. Subskrybenci X Premium mogą publikować treści long-form do 25 000 znaków z bogatym formatowaniem, ale wpis 280-znakowy nadal pozostaje dominującą formą dla zasięgu organicznego.
Nieoczywistą regułą jest podmiana URL. Twitter pakuje każdy URL (niezależnie od długości) w 23-znakowy krótki link t.co w momencie publikacji. Koszt 23 znaków jest stały.
published_length = raw_length − URL_length + 23
Przykład: szkic taki jak "Check this: https://example.com/very-long-path?id=12345" ma 53 znaki surowe. URL ma 38 znaków, więc zostaje zastąpiony 23-znakowym linkiem t.co, a opublikowana długość to 53 − 38 + 23 = 38 znaków. Odzyskujesz 15 znaków, o których nie wiedziałeś.
Przy wklejaniu długiego URL do szkicu koder/dekoder URL to szybki sposób na zweryfikowanie, co liczy się jako URL (Twitter rozpoznaje URL według wzorców RFC 3986, łącznie z query string i fragmentami). Subdomeny, schematy, porty, ścieżki, query i fragmenty są wchłaniane przez 23-znakową podmianę.
Inne pola Twittera: nazwa wyświetlana 50 znaków, bio 160 znaków, handle 15 znaków. Threads (odpowiednik Twittera od Meta) stosuje zamiast tego limit 500 znaków.
Instagram — 2200 podpis, 30 hashtagów, haczyk 125 znaków
Podpisy Instagrama pozwalają na 2200 znaków, ale feed pokazuje tylko pierwsze 125 znaków przed zwinięciem reszty pod stuknięciem „…więcej”. Ponad połowa czytelników nigdy nie stuka. Limit podpisu Instagrama, który ma znaczenie dla zaangażowania, to więc 125, mimo że twardy limit wynosi 2200.
Limit 30 hashtagów jest sztywny: próba dodania 31. hashtaga kończy się odrzuceniem postu. Zakres 5-10 hashtagów zwykle osiąga najlepsze wyniki; powyżej 11 wzrost odkrywalności wypłaszcza się, a post zaczyna wyglądać dla algorytmu jak spam.
Inne pola: bio 150 znaków, nazwa wyświetlana 30 znaków, DM 1000 znaków.
LinkedIn — 3000 wpis, słodki punkt 1300, linia zwijania „zobacz więcej”
Limit znaków LinkedIn dla wpisów wynosi 3000, ale feed wyświetla jedynie pierwsze 210 znaków przed linią zwijania „zobacz więcej”. Wpisy w przedziale 1200-1500 znaków wygrywają zaangażowanie na LinkedIn (wiele badań Buffera i Hootsuite’a zbiega się w okolicach 1300 jako szczytu): są wystarczająco długie, żeby pokazać wartość, na tyle krótkie, żeby nie wyczerpać scrolla.
Artykuły LinkedIn (powierzchnia publikacji long-form) pozwalają na 110 000 znaków, czyli praktycznie bez limitu. Nagłówki profilu kapują się na 220, tekst sekcji „about” na 2600.
Facebook — 63 206 znaków, słodki punkt organiczny 80 znaków
Limit wpisu Facebooka 63 206 znaków to przeważnie ciekawostka; w praktyce wpisy poniżej 80 znaków otrzymują około 30% większy zasięg organiczny niż dłuższe (HubSpot konsekwentnie raportuje to od lat). Nad linią zwijania desktop pokazuje około 477 znaków; mobile tnie przy około 125.
Maksymalna długość komentarza to 8000 znaków. Reakcje, udostępnienia i kliknięcia przesuwają się w stronę krótszych postów; długa kopia należy do podlinkowanego artykułu, nie do podpisu na Facebooku.
Nowsze platformy — Bluesky, Mastodon, Threads, TikTok
- Bluesky kapuje wpisy na 300 znaków i jest nietypowym przypadkiem: Bluesky liczy klastry graficzne, więc siedmiocodepointowe emoji rodziny 👨👩👧👦 kosztuje 1 znak, nie 7
- Mastodon domyślnie ustawia 500 znaków na toot, ale administratorzy instancji mogą podnieść to do 5000 lub nawet bez limitu; sprawdź instancję, z której publikujesz
- Threads stosuje limity 500 znaków w stylu Twittera z liczeniem po codepointach
- TikTok podpisy pozwalają na 2200 znaków z około 100 pokazanymi nad linią zwijania
Reddit, Discord, Slack — long-form i ustawienia domyślne społeczności
- Reddit tytuł 300 znaków (moderatorzy subredditów często wymuszają <60 przez AutoModerator); komentarze 10 000 znaków
- Discord standardowa wiadomość 2000 znaków; opisy embed 4096; Nitro podnosi do 4000 w czystych wiadomościach
- Slack wiadomość 40 000 znaków; powyżej 2000 czytelność spada gwałtownie i wielu odbiorców ignoruje długie wiadomości
Cele liczby słów według typu treści
Limity znaków dominują w mediach społecznościowych i SEO; liczba słów dominuje we wszystkim innym: pracach akademickich, fakturowaniu, content marketingu, manuskryptach. Tabela poniżej podaje docelowy zakres i szacowany czas czytania (230 słów na minutę, mediana metaanalizy cichej lektury Brysbaerta 2019) dla każdego typowego typu treści.
| Typ treści | Cel słów | Czas czytania @ 230 wpm | Uwagi |
|---|---|---|---|
| Tweet | 30-40 słów | 10 s | optymalizuj pod znaki, nie słowa |
| Wpis LinkedIn (słodki punkt) | 170-250 słów | 1 min | nad linią zwijania |
| Podpis Instagram (haczyk) | 20-25 słów | <10 s | pierwsze 125 znaków |
| Wpis na blogu — krótki | 500-700 słów | 2-3 min | listicle, news, gorący temat |
| Wpis na blogu — standard | 1000-1500 słów | 4-7 min | tutorial, głęboki przewodnik |
| Wpis na blogu — długi | 2000-3000 słów | 9-13 min | przewodnik kompleksowy |
| Strona filar SEO | 2500-5000 słów | 11-22 min | autorytet tematyczny |
| Esej akademicki (liceum) | 500-1500 słów | 2-7 min | zależnie od zadania |
| Esej akademicki (studia) | 1500-3000 słów | 7-13 min | na zadanie |
| Dzień NaNoWriMo | 1667 słów/dzień | — | 50 tys. słów w 30 dni |
| Powieść — krótka | 50 000-70 000 słów | — | YA, kryminał |
| Powieść — standardowa | 80 000-100 000 słów | — | fikcja dla dorosłych |
| Prelekcja konferencyjna (12 min @ 130 wpm) | 1500-1600 słów | mówione | przećwicz, aby potwierdzić |
| Odcinek podcastu (30 min @ 130 wpm) | 3900 słów | mówione | część skryptowana |
Czas czytania to bardziej użyteczna jednostka docelowa dla content marketingu: czytelnicy reagują na etykietę „5 min czytania” pewniej niż na „1150 słów”. Liczba słów pozostaje jednostką dla fakturowania (tłumaczenie rozliczane za słowo źródłowe), zgodności z platformą (50 tys. NaNoWriMo, akademicki sufit 2000 słów) i warunków umownych. Licznik słów pokazuje obie w czasie rzeczywistym podczas pisania, plus czas mówienia przy 130 wpm dla prelekcji i podcastów.
6 błędów liczenia, które rozwalają realne aplikacje
To powracające awarie obserwowane w wysłanym kodzie i wysłanych kampaniach marketingowych. Każdej towarzyszy objaw, źródłowa przyczyna oraz poprawka.
Błąd 1: Użycie string.length do walidacji limitu znaków
Objaw: Użytkownik wkleja tweeta z trzema emoji, który w rzeczywistości ma 270 codepointów. Walidacja front-endu mówi 276 i odmawia wysyłki. Albo gorzej: kod akceptuje szkic 285-codepointowy, bo budżet emoji się znosi, a Twitter odrzuca go po stronie serwera.
Przyczyna źródłowa: String.prototype.length w JavaScript zwraca jednostki kodowe UTF-16. Każde emoji jest parą zastępczą, kosztując 2 jednostki. Każdy znak z płaszczyzny astralnej (symbole matematyczne, pisma starożytne) robi to samo.
Poprawka: Iteruj po codepoincie operatorem spread albo Array.from.
// ❌ wrong
function isUnderTwitterLimit(text) {
return text.length <= 280;
}
// ✅ correct
function isUnderTwitterLimit(text) {
return [...text].length <= 280;
}
Po głębsze wzorce iteracji po codepoincie oparte na regex (w tym obsługa klastrów graficznych) sięgnij do Regex Cheat Sheet, który obejmuje flagi /u i /v oraz Unicode property escapes.
Błąd 2: Dzielenie tekstu CJK po białych znakach przy liczeniu słów
Objaw: 500-znakowy artykuł chiński raportowany jest jako 1 słowo. Wycena tłumaczenia oparta na tej liczbie jest pomyłkowa o 500x.
Przyczyna źródłowa: Języki CJK nie używają spacji między słowami. text.split(/\s+/) zwraca pojedynczy token zawierający całe wypracowanie.
Poprawka: Licz każdy ideogram CJK jako jedno słowo; tę konwencję stosują Microsoft Word, Google Docs i każdy natywny edytor CJK.
function countWordsMixed(text) {
const cjk = (text.match(/[一-鿿-ヿ가-]/g) || []).length;
const latin = (text
.replace(/[一-鿿-ヿ가-]/g, ' ')
.match(/[A-Za-z0-9]+(?:['’-][A-Za-z0-9]+)*/g) || []).length;
return cjk + latin;
}
Zakresy Unicode pokrywają CJK Unified Ideographs (U+4E00 do U+9FFF), hiraganę i katakanę (U+3040 do U+30FF) oraz Hangul Syllables (U+AC00 do U+D7AF); cztery bloki, które Microsoft Word liczy jako ideogramy.
Błąd 3: Zapomnienie o podmianie URL Twittera na 23 znaki
Objaw: Szkic pokazuje 320 znaków w twoim liczniku, w tym 80-znakowy URL. Spędzasz 10 minut na przycinaniu, aby zdać sobie sprawę, że Twitter zaakceptowałby oryginał przy 263 znakach.
Przyczyna źródłowa: Twitter zastępuje każdy URL 23-znakowym linkiem t.co w momencie publikacji. Twój surowy licznik o tym nie wie.
Poprawka: Wstępnie wylicz długość po publikacji wzorem raw − URL_length + 23 dla każdego URL. Dla szkiców zawierających wiele URL zsumuj korekty. Wykrywanie URL w opublikowanej treści idzie za RFC 3986, tymi samymi regułami parsowania, które przedstawia przewodnik URL Encoding & Decoding.
Błąd 4: Pisanie meta opisu do 320 znaków (stara wytyczna)
Objaw: Stworzyłeś 280-znakowy meta opis z CTA na końcu. W wynikach wyszukiwania Google opis urywa się w środku zdania na znaku 158, a CTA nigdy się nie pojawia.
Przyczyna źródłowa: Między grudniem 2017 a majem 2018 Google na krótko rozszerzył wyświetlanie meta opisu do 320 znaków. Wiele poradników SEO nadal podaje tę liczbę. Google wrócił do ~160 w połowie 2018 roku i utrzymuje to od tamtej pory.
Poprawka: Pisz do 150-160 znaków. Wstaw podstawowe słowo kluczowe w pierwszych 30 znakach i CTA w ostatnich 30. Dla stron o wysokiej stawce użyj symulatora SERP z dokładnością do piksela: szerokie glify (W, M, K) zjadają budżet szybciej niż wąskie (i, l, t).
Błąd 5: Mylenie 280 znaków z 280 słowami
Objaw: Ktoś z zespołu pisze „potrzebujemy tweeta na 280 słów” i produkuje 1500 znaków idealnie poprawnej prozy. Tweet się nie opublikuje.
Przyczyna źródłowa: Pomieszanie znaków i słów. Te dwie jednostki różnią się około 5-6 razy dla prozy angielskiej.
Poprawka: Przypnij regułę do platformy. Twitter, SMS i meta SEO liczą znaki. NaNoWriMo, zadania akademickie, kontrakty tłumaczeniowe i większość briefów content-marketingowych liczą słowa. W razie wątpliwości sprawdź własny licznik platformy (pole kompozycji Twittera, Word > Recenzja > Liczba słów) przed zatwierdzeniem specyfikacji.
Błąd 6: Wklejanie cudzysłowów drukarskich, które po cichu przełączają SMS na UCS-2
Objaw: Kopiujesz szablon paragonu klienta z Google Docs do swojego nadawcy SMS. Oryginał miał 145 znaków i szedł jako jeden segment GSM-7. Po wklejeniu nadal ma 145 znaków, ale jest rozliczany jako 2 segmenty UCS-2. Koszty się podwajają w kampanii na milion wiadomości.
Przyczyna źródłowa: Google Docs i Word automatycznie zamieniają " i ' na cudzysłowy typograficzne " " i ' '. Te cudzysłowy nie są w zestawie znaków GSM-7, co przełącza całą wiadomość na UCS-2.
Poprawka: Normalizuj przed wysyłką:
function toGsm7Quotes(s) {
return s
.replace(/[“”]/g, '"') // " " → "
.replace(/[‘’]/g, "'") // ' ' → '
.replace(/[–—]/g, '-'); // – — → -
}
Uruchom to przed wysyłkami wrażliwymi na rozliczenia. Twilio, MessageBird i Bandwidth wszystkie udostępniają pole kodowania w odpowiedzi: loguj je i alarmuj, gdy UCS-2 pojawi się w szablonach, które miały być GSM-7.
FAQ
Jaka jest różnica między liczbą znaków a liczbą słów?
Liczba znaków zlicza każdy znak, w tym spacje, interpunkcję i emoji, mierząc po codepoincie Unicode na większości nowoczesnych platform. Liczba słów zlicza tokeny rozdzielone białymi znakami dla pism łacińskich i ideogram po ideogramie dla CJK. Twitter, SMS i meta opisy SEO używają liczby znaków. Eseje akademickie, manuskrypty NaNoWriMo i faktury tłumaczeniowe używają liczby słów.
Dlaczego Twitter liczy emoji jako 1 znak, a JavaScript liczy je jako 2?
Twitter mierzy po punkcie kodowym Unicode: każde emoji to jeden codepoint, jeden znak. string.length w JavaScript mierzy jednostki kodowe UTF-16. Większość emoji znajduje się powyżej U+FFFF i jest kodowana jako pary zastępcze w UTF-16, więc zajmuje dwie jednostki kodowe, a .length zwraca 2. Użyj [...text].length albo Array.from(text).length, aby uzyskać liczbę codepointów, którą Twitter faktycznie liczy.
Dlaczego limit znaków SMS to czasem 160, a czasem 70?
SMS domyślnie używa 7-bitowego kodowania GSM-7, dając 160 znaków w 140-bajtowym payloadzie. Jeśli wiadomość zawiera dowolny znak spoza GSM-7 (emoji, cudzysłowy drukarskie, CJK, akcentowane litery łacińskie poza małym zestawem), cała wiadomość przełącza się na 16-bitowe kodowanie UCS-2, a limit na segment spada do 70 znaków. Jedno emoji gdziekolwiek w wiadomości wyzwala przełączenie.
Jaka jest idealna długość meta opisu w 2026 roku?
Celuj w 150-160 znaków. SERP Google na desktopie obcina około 155-165, zależnie od pikselowej szerokości wyświetlania; mobile tnie między 100 a 120. Poniżej 120 znaków Google często w całości zastępuje twój opis fragmentem z treści strony. Rozpocznij od głównego słowa kluczowego w pierwszych 30 znakach i zakończ CTA w ostatnich 30, aby komunikat przetrwał obcięcie z obu stron.
Czy limit znaków obejmuje spacje i emoji?
Tak, na praktycznie każdej platformie. Spacje, znaki nowej linii, interpunkcja i emoji każde liczą się jako jeden codepoint Unicode. Dwa wyjątki warte zapamiętania: SMS, gdzie emoji wyzwala opisane wyżej przełączenie kodowania, oraz Bluesky, który liczy klastry graficzne, więc wielocodepointowe emoji takie jak rodzina 👨👩👧👦 kosztuje 1 znak zamiast 7.
Jak liczy się słowa w tekście chińskim, japońskim, koreańskim?
Każdy ideogram CJK liczy się jako jedno słowo; tę konwencję stosuje liczenie słów Microsoft Worda w trybie chińskim, Google Docs, natywne edytory CJK i każdy komercyjny system pamięci tłumaczeniowej. 500-znakowy esej chiński raportowany jest jako 500 słów. Tekst mieszany liczy ideogramy CJK po znaku, a tokeny łacińskie po białych znakach, sumując oba wyniki.
Jak Twitter obsługuje długość URL w limicie 280 znaków?
Twitter automatycznie pakuje każdy URL w 23-znakowy krótki link t.co w momencie publikacji, niezależnie od pierwotnej długości. Długość po publikacji idzie za wzorem published = raw − URL_length + 23 na każdy URL. Szkic 320 znaków zawierający jeden 100-znakowy URL idzie jako 243 znaki. Twitter rozpoznaje URL według wzorców RFC 3986, więc query string i fragmenty są wchłaniane w token URL.
Powiązane lektury
- Regex Cheat Sheet — dopasowanie wzorców dla walidacji znaków, Unicode property escapes
- Text Diff Online Guide — porównywanie dwóch fragmentów tekstu, linia po linii i znak po znaku
- URL Encoding & Decoding Guide — reguły escapowania znaków, gdy tekst wędruje przez URL-e
- Understanding Base64 — druga połowa kodowania „bity na znaki”, zastosowana do e-maila i danych binarnych