Free tools

Hashnode character counter

A Hashnode character counter tells you how much of the post limit you have used before you publish. This one counts the way Hashnode counts, which is not always the way a text box does, and it updates on every keystroke. It runs in your browser and nothing you type is sent anywhere.

0

Counted in code points. No published limit to measure against.

Words
0
Lines
0
Bytes (UTF-8)
0
Plain length
0

No limit is shown because we have not read one from Hashnode's own documentation yet. Every other tool will happily show a number it got from memory; that is how stale limits spread.


How to use it

  1. Paste or type your draft into the box.
  2. Watch the count and the bar as you write. Both update on every keystroke.
  3. If chips sit above the box, use them to count a reply, bio or caption against its own limit. No chips means one limit covers the fields Hashnode documents.
  4. Trim until the number under the limit stops being red, then take the draft back to Hashnode.

Networks disagree about what a character is

Every social network stores your post as text, and every one of them decided separately how to measure it. That sounds like an academic distinction until a post you were told is 279 characters is rejected at 280.

X's weighted count, where a link is 23

X does not count characters at all in the ordinary sense. Every link becomes exactly 23 characters no matter how long it is, because X wraps it in its own shortener before it stores it. An emoji counts as two. So does most CJK text, so a post in Japanese runs out of room at roughly 140 visible characters rather than 280.

The weighting is applied before the post is stored, so the figure in X's own composer already includes it. Anywhere else, a plain string count and X's count are two different numbers for the same draft, and they drift furthest apart on exactly the posts you care about, the ones carrying a link and a couple of emoji.

Graphemes, or one character the way a person means it

Bluesky counts graphemes, which means the thing a human would call one character. A family emoji is one grapheme. In JavaScript's default measurement that same emoji is eleven. A counter using the naive measurement tells you that you have far less room than you do.

A grapheme is what your cursor steps over when you press the right arrow key once. Several code points can make one: a letter plus an accent mark, a flag built from two regional indicators, an emoji carrying a skin tone, or a family emoji stitched together with joiners. Counting them means asking how many cursor stops the text has, which takes a segmentation library rather than a length property, and that is why so little software counts them by default.

Unicode code points

A code point is one entry in the Unicode standard, written U+0041 for capital A. It sits between the two other things people mean by the word character. It is coarser than the UTF-16 units a programming language hands you, since anything outside the basic range takes two of those, and finer than a grapheme, since an accented letter can be two code points that draw as one mark.

Mastodon counts Unicode code points, and any link counts as 23 there too. Telegram changes the limit entirely once you attach an image, because the text stops being a message and becomes a caption.

UTF-8 bytes

Some fields are capped by storage size rather than by anything a reader would recognise. UTF-8 spends one byte on an unaccented Latin letter and two, three or four on everything else, so a byte cap is a character cap that shrinks depending on which language you write in.

This is the unit that surprises people most, because the number in the composer looks generous right up to the moment it is not. Where a field is capped in bytes, the byte figure is the one to watch and the character figure is decoration. The counter above shows both.


Why most counters get this wrong

Counting a string is one line of code in every programming language, and that line uses UTF-16 units. For English text with no emoji it happens to give the right answer, which is why the mistake survives.

It breaks on emoji, on accented characters written as a letter plus a combining mark, on flags, on skin-tone modifiers, and on every non-Latin script. Those are not edge cases on a social network.

This counter measures in whichever unit the network named. Where our own publishing gate enforces a limit for a network, this page reads it from the same place, so the two cannot disagree.

Emoji made of several characters

One visible emoji can be a single code point or a dozen. The family emoji is several people joined with zero-width joiners. A thumbs up with a skin tone is the base emoji plus a modifier. A flag is two regional indicator letters that mean nothing on their own. A naive count sees every piece separately.

The practical effect is a counter telling you that you have spent far more room than you have, so you cut a sentence that did not need cutting. On a network that counts graphemes, the whole emoji is one, whatever it was assembled from.

Accented letters written as a letter plus a mark

There are two ways to store an e with an acute accent. One is a single code point for the accented letter. The other is a plain e followed by a combining acute, which draws identically and takes twice the room. Which one you get depends on your keyboard, your operating system and whatever pasted the text in, and you cannot tell them apart by looking.

So the same visible word can measure two different lengths in two drafts of the same post. Languages that stack more than one mark on a letter, Vietnamese among them, feel this hardest.

Scripts outside the Latin alphabet

Japanese, Chinese, Korean, Arabic, Hebrew, Thai, Hindi and every other non-Latin script are the normal case for most of the world and the edge case in most counters. Some networks charge double for CJK characters deliberately. Others charge by byte, which penalises the same text for a different reason.

If you write in one of these and the counter you are using does not say which unit it measures in, it is telling you about English.


Going over does not always mean being told

The failure everyone expects is a rejection: you press post, the network refuses, you trim. That is the good case, because you find out immediately and nothing is lost.

Truncated instead of refused

The other case is truncation, where the network accepts the post and silently drops the overflow. Slack does this at its ceiling: text past the limit does not come back as an error, it simply is not there. A post that ends mid-sentence in front of your audience is worse than one that was refused, and you will usually hear about it from someone else.

Truncation is quiet by design. The write succeeded, so nothing is flagged, and your own composer often still shows the full draft from its local copy. The place it becomes visible is the published post on somebody else's screen, which is why the check has to happen before you press the button.

Fits in English, over the limit in Japanese

A third case is the one that catches people who write in a second language. A limit measured in bytes rather than characters means the same sentence fits in English and does not fit in Japanese, Arabic or Hebrew, because those scripts spend two or three bytes per character where Latin spends one. YouTube's video description works this way, so an English description gets its full allowance and a Japanese one runs out at roughly a third of the character count.

The tell is a draft that passed every check you ran and was refused anyway, or one that was accepted in one language and refused in another that says the same thing. Translating a post that sat near the ceiling in English almost always means editing it again, since the translation carries your words into a script that costs more per character.

Checking before you press post

Paste the finished draft, in the language you are going to publish it in, with the links and the emoji already in it. A draft checked before the link went in is a different length from the one you are about to send, and links are the biggest single swing between what a text box says and what the network counts.

The counter above measures in the unit the network itself uses, which is the only way to see any of this coming.


The limit you hit is rarely the post box

Most people meet a character limit for the first time in the composer, then meet four more they did not know existed. A profile bio is usually far shorter than a post. A reply can be shorter than the thing it replies to. Alt text has its own ceiling, and it is often tighter than people expect given how much there is to describe.

Bios and profile fields

The bio is the field people write last and check least, and it is usually the tightest one on the account. Display name, location and the label on a link often carry their own separate ceilings, shorter again, and a bio that is refused rarely tells you by how much.

Bios also get edited in a hurry, from a phone, in a settings screen with no counter in it at all. Writing the bio in the box above and pasting the finished version in is less painful than trimming a word at a time in a form that keeps refusing to save.

Look at the saved version on a phone as well as counting it. A bio that fits can still break across lines in an unfortunate place, since the profile screen is narrower than the box you edited it in and it wraps wherever it runs out of room.

Captions, once you attach media

Attaching media can change the number under your feet. On Telegram, text sent on its own is a message and text sent with an image is a caption, and a caption gets a fraction of the room. The words did not change; their container did.

The swap runs in reverse too. Remove the image and a caption that was refused suddenly fits, which means a post you cut down for a caption limit is now shorter than it had to be. Decide whether the post is carrying media before you write it rather than after.

Titles and headlines

Where a network has a title as well as a body, the title is almost always the tighter constraint and the one that matters more, because it is what appears in a feed, a search result and a notification. A generous body limit tempts people to spend their editing effort in the wrong place.

A title is also the part most likely to be cut somewhere other than the network, since search results and preview cards trim on their own rules and at their own widths. Front-load it. The words after the first few carry meaning for someone who has already decided to click and nothing at all for anyone else.

Replies, comments and alt text

A reply box can be shorter than the post box on the same network, and it is the field where the limit irritates most, because a reply gets written fast and in response to something. Alt text sits in the same category: its own ceiling, its own box, and no counter in most composers.

Switch the mode above to whichever field you are actually writing, rather than counting a bio against a post limit and wondering why it was refused.

Replies also arrive with handles already sitting in the box, put there by the reply rather than typed by you, and whether those are charged against the limit is something each network decided on its own. If a reply is refused while the text in front of you looks short, the prefix is the first place to look.

Handles and usernames

The handle is the shortest field on an account and the only one you cannot quietly revise later, since every link pointing at you is built from it. Networks cap it well below the bio, and most of them also restrict which characters are allowed, so a name you can type into a display name is not always a name you can register.

Short and permanent is a combination worth checking before you claim it rather than after. The display name beside it usually gets a separate and more generous ceiling, which is why an account can carry a full company name above a handle that had to be abbreviated to fit.

Direct messages

A private message usually gets far more room than a public post on the same network, and it is the field where most people never meet the limit at all. The counter still earns its keep there when you are pasting a template into a field you have not used before, or when the message carries a signature block that was written for email.

The extra room is its own trap. A first message from a stranger is not ignored for being too short. Use the space the way you would use a generous post limit, as a budget you are under no obligation to spend.

The tier you pay for can change the limit

On some networks the ceiling is not a property of the network at all. It belongs to the subscription, and a paid tier raises it for anything written from that account. The same draft then fits for you and is refused for a colleague on a free plan, which turns "what is the limit" into a question with two answers.

The limit applies where the post is written, so it is the author's tier that decides and not the reader's. If more than one person publishes for your brand, write to the lowest tier in the group, because a draft that only one account can send is a draft that gets stuck the week that account is away.

Each part of a thread is counted on its own

A thread is a run of separate posts, so the limit applies to each part rather than to the whole. That sounds like freedom until you write the thing as an essay and then try to cut it up, at which point every break has to land where a sentence allows rather than where the argument wants it.

Counting part by part while you draft is far easier than splitting afterwards. Paste each one into the box on its own, and read any part that needs the entire allowance as a sign it is carrying two ideas that would be happier apart.


Length is not the same as the right length

Fitting is the floor, not the goal. A post that uses every available character is usually a post that has not been edited.

The first line does the work on every network with a feed, because it is the part shown before anyone taps to expand. If your point arrives in the fourth sentence, the length of the other three is not the problem.

Where a limit is generous, the constraint moves from the platform to the reader. Nobody finishes a wall of text because it was permitted, and the networks with the largest ceilings are the ones where brevity stands out most.

The useful question a counter answers is not "does this fit" but "what did I spend the room on". If a third of the post is a link and a row of hashtags, the counter has just told you something about the post rather than about the limit.

The cut in the feed comes before the limit

Two different numbers govern a post. One is the ceiling past which the network refuses to accept it. The other is the point where a feed stops printing the text and offers a control to expand it, and that second cut lands a long way before the first.

So a post can sit comfortably inside the limit and still be read as a line or two. Where a network truncates, the words above the cut are the whole post for almost everyone, and the rest of it is written for the small share of readers who tapped.

Buying room back from the sentence

When a draft runs a little over, the first instinct is to delete an idea. It is usually cheaper to delete the padding wrapped around the ideas already there. Phrases like in order to, the fact that, and at this point in time cost real characters and carry nothing, and the version without them reads faster as well as fitting.

The other cheap win is the link. If the post stands up without it, a URL is often the single largest item in the budget, and moving it into a reply or a comment buys back a whole clause of the thing you were trying to say.


Questions

How many characters can a Hashnode post be?

We have not yet verified Hashnode's published limit against its own documentation, so this page does not state one, and the network's own composer is the thing to trust. The counter above measures in the unit Hashnode itself measures in rather than in plain string length, and where the network publishes a ceiling the bar is set to it.

Do links count towards the character limit?

On most networks yes, and on some the length of the link does not matter. X replaces every URL with a fixed 23-character wrapped version before it counts, so a very long link costs the same as a short one. Shortening a URL before posting to X saves you nothing.

Do emoji count as one character?

It depends on the network, which is the whole problem. Bluesky counts an emoji as one. X counts it as two. A naive counter can count a single family emoji as eleven. This tool uses the network's own rule.

Is anything I type here uploaded?

No. The counting happens in your browser, in JavaScript, on your machine. There is no request to a server when you type, no account, and no log of your draft. You can disconnect from the internet and it still works.

Does it count spaces and line breaks?

Yes. Every network counts spaces and newlines as characters. The tool also shows a word count, a line count and the size in bytes, since a few networks cap on bytes rather than characters.

What happens if I go over the limit?

Usually the network refuses the post and tells you, which is the outcome you want because nothing is lost. Some networks truncate instead: they accept it and silently drop the overflow, so the post appears in front of your audience ending mid-sentence. Checking before you publish is the only defence against the second kind.

Why does my post fit in English but not in another language?

Because a few networks cap on bytes rather than characters, and most scripts outside the Latin alphabet spend two to four bytes per character where English spends one. The same sentence can be well inside the limit in English and over it in Japanese, Arabic or Hebrew. Where a network counts in bytes, the counter above says so and measures that way.

Is the bio limit the same as the post limit?

Almost never, and the bio is usually far shorter. Replies, alt text and titles each tend to have their own ceiling too, and attaching an image can change the limit on the text beside it. Where Hashnode documents separate limits, the chips above the box switch between those fields, and the sourced table further down this page lists every figure either way.

Should I use all the characters I am given?

No. Fitting is the floor. The first line is what people see before anything expands, so that is where the editing effort belongs, and the networks with the biggest limits are the ones where a short post stands out most. Treat the number as a budget rather than a target.

Do direct messages have the same limit as posts?

Almost never. A private message usually gets much more room than a public post on the same network, while the fields around it, a display name or a handle, get far less. Switch the mode above to the field you are writing instead of counting everything against the post limit.

Does a paid account get a longer limit?

On some networks yes. The ceiling can belong to the subscription rather than to the network, and it is the author's tier that decides rather than the reader's. If more than one person publishes for your brand, write to the lowest tier in the group so a draft does not get stuck when somebody else picks it up.

Does each post in a thread get its own limit?

Yes. A thread is a sequence of separate posts and each part is counted on its own. The catch is that the breaks then have to fall where a sentence ends, so counting part by part while you draft is easier than cutting a finished essay into pieces.


Support status

Can GrowSocialelion post to Hashnode?

Yes. Hashnode is live today: connect it, let the agent draft and schedule, approve, and it publishes. See the status of all 49 networks.