Paid ads
Free Facebook ad copy generator with truncation preview
By Charles Summers · Updated · Free, no signup
Short answer
This writes Facebook and Instagram ad copy structured around your audience's awareness stage, then shows you where it gets cut. Primary text is split at roughly 125 characters, the length Meta recommends because the mobile feed collapses longer copy behind a "See more" link, and the tool prints the visible block and the hidden block separately. Headlines are checked against the narrower and wider placement limits, around 27 and 40 characters, and the link description is flagged because many placements never render it at all.
Use the facebook ad copy generator
What does this tool actually do?
This writes Facebook and Instagram ad copy structured around your audience's awareness stage, then shows you where it gets cut. Primary text is split at roughly 125 characters, the length Meta recommends because the mobile feed collapses longer copy behind a "See more" link, and the tool prints the visible block and the hidden block separately.
It runs entirely in your browser. Nothing you type is sent to a server, no account is required, and there is no usage limit, because there is no cost per run to control.
The "See more" cut is a line count in a fluid container, not a character limit
There is no number of characters at which Meta truncates primary text. The feed renders your copy into a container whose width depends on the device, then collapses it after a small number of rendered lines and puts a "See more" link at the break. Because the container is fluid and the font is proportional, the same copy collapses at a different word on a small Android phone than it does on a large iPhone, and differently again in the Instagram feed. Meta's own guidance recommends keeping primary text to about 125 characters, which is a sensible planning proxy for that behaviour rather than a limit the system enforces.
Two things move the cut earlier than the character count suggests. Line breaks are the big one: a break is a new rendered line, so a punchy three-line opener with blank lines between each can burn the entire visible block on twelve words. Long unbroken words and URLs are the other, since they cannot wrap mid-word and push the whole line down. If you want a specific line to be visible, put it first and do not put a blank line above it.
The practical consequence is that the first sentence carries almost all of the load, and everything after "See more" is read only by people who have already decided you are worth a tap. That inverts the usual copywriting instinct to build towards a point. On Meta the point goes first, and the build comes after, because the build is what you use to convert the minority who expanded rather than to earn the expansion in the first place.
This tool cuts at 125 characters on a word boundary and shows you both halves. Treat the visible block as approximately what a mobile feed user sees and the hidden block as optional reading. If your offer, your differentiator or the reason anyone should care sits in the hidden half, the ad is being judged on the visible half alone, and you have effectively written a different ad from the one you think you wrote.
Awareness stage decides the first sentence, and getting it wrong wastes the impression
Eugene Schwartz's awareness ladder is still the most useful framework for paid social, because Meta is an interruption medium and nobody arrived with a query. The reader is somewhere on a spectrum from not knowing they have a problem to knowing your product and weighing it up, and the first sentence has to meet them where they are. Copy aimed one rung above where they actually stand reads as a non sequitur; copy aimed one rung below wastes their time explaining something they already know.
The mistake this framework prevents is the most expensive one in paid social: running product-aware copy at a cold audience. An ad that opens with your offer assumes the reader has already accepted that the problem is real, that a solution category exists, and that you are a credible option. A cold prospect has accepted none of the three, so the offer reads as noise and the ad buys impressions from people who were never going to respond to that argument, whatever the creative looked like.
- Unaware. They have absorbed the problem as normal work. The first line describes the situation, not the product, and its job is recognition: "that is my week."
- Problem-aware. They know it hurts and have not named a fix. The first line names the pain precisely, in their words, and the body introduces a mechanism rather than a brand.
- Solution-aware. They know solutions exist and are choosing between approaches. The first line has to be about your mechanism and why it differs, because "we solve X" is now table stakes.
- Product-aware. They know you. Lead with the offer, the objection and the reason to act now, because everything else has already been established.
- Most aware. Retargeting and existing customers. This is where a bare offer and a deadline earn their place, and where long copy usually costs you money.
The headline sits by the button, and the description often does not render
The headline is not the top of the ad. In a feed placement it appears underneath the creative, next to the call-to-action button, which means it is read after the image and usually after the first line of primary text. Its job is therefore not to hook, it is to answer "what happens if I press this." Repeating the primary text there is a wasted field, and the field is short: Meta's guidance points at roughly 27 characters for consistent display, and wider placements will show something closer to 40 before cutting.
The link description is the field most people over-invest in. It is not rendered at all on several major surfaces, including Stories and Reels, and even on feed placements it is frequently dropped depending on the format and whether the creative is a video or a single image. Write it as a bonus line that adds a qualifier, never as a place where a necessary piece of information lives. If the ad stops making sense when the description disappears, the description was doing a job that belonged in the primary text.
Because Advantage+ placements spreads one ad across more than a dozen surfaces with different aspect ratios and different visible field sets, the safe assumption is that any given viewer sees fewer of your fields than you filled in. Placement asset customisation lets you override text and creative per surface, which is worth doing for the two or three placements that actually get most of your spend, and not worth doing for the long tail.
When the algorithm does the targeting, the copy is the targeting
With broad targeting and Advantage+ audiences doing the work, your copy has become a self-selection mechanism. The ad that names a specific role and a specific pain teaches the delivery system who responds, and the system then finds more of them. Generic copy performs the opposite function: it collects cheap engagement from a wide, unqualified pool, and because the optimisation signal is downstream of that engagement, the system dutifully finds more people like the ones who were never going to buy.
This changes how to test. Three variants that differ only in wording tell you nothing worth acting on, because they represent one argument and will find the same audience. Test different arguments instead: a pain-led ad against an offer-led ad against a proof-led ad, and read which one the system can spend efficiently on. Meta documents that an ad set needs roughly 50 optimisation events per week to exit the learning phase, and every edit restarts it, which is why splitting a small budget across many near-identical ads is worse than running fewer, genuinely different ones.
Two habits make results readable. First, hold everything except the argument constant when you test copy, since a new image plus new copy tells you only that something changed. Second, judge copy on the metric it can actually move: cost per result and the ratio of expansions to impressions if you have it, rather than raw click-through, which rewards curiosity gaps that convert badly at the landing page.
Numbers worth knowing
| Metric | Typical | What it means |
|---|---|---|
| Primary text planning length | about 125 characters | Meta's own recommendation, and a proxy for the point the mobile feed collapses copy behind "See more". The real cut depends on device width, font size and your line breaks. |
| Headline display length | roughly 27 to 40 characters | Around 27 displays consistently across placements; wider surfaces show more. It sits next to the call-to-action button, not at the top of the ad. |
| Link description | often not rendered | Absent from Stories and Reels and dropped on many feed formats. Useful as a qualifier, never as the only place a necessary fact appears. |
| Learning phase exit | about 50 optimisation events per week | Meta's documented threshold per ad set. Any significant edit restarts it, which is the real cost of constantly tweaking copy on a small budget. |
| Placements one ad can run on | more than a dozen surfaces | Advantage+ placements spans feeds, Stories, Reels, Marketplace and Audience Network, each with a different aspect ratio and a different set of visible text fields. |
Mistakes that quietly cost you results
- Putting the offer in the fourth paragraph of the primary text
- Only people who tapped "See more" will ever read it, and they are a small fraction of impressions. Anything the ad depends on has to sit in the first 125 characters, before the collapse.
- Opening with a blank line or a three-line stacked hook
- The feed collapses after a small number of rendered lines, so every line break spends part of your visible block. A stacked opener can burn the whole thing on a dozen words.
- Running offer-led copy at a cold, broad audience
- An offer assumes the reader already accepts the problem, the category and your credibility. At the unaware and problem-aware stages the first line has to earn recognition first, or the impression is spent arguing a point they have not reached.
- Repeating the primary text in the headline
- The headline sits next to the button and is read last, so it should answer what happens after the click. Duplicating the hook there wastes the one field that sets expectation for the landing page.
- Testing three rewordings of the same angle
- They will find the same people and produce the same result at three times the cost of learning nothing. Test different arguments, hold the creative constant, and let each ad set gather enough events to leave the learning phase.
What does the output look like?
This is the exact output the tool produces from the example inputs. It is generated by the same code that runs when you click the button, so what you see here is what you get.
Frequently asked questions
Is 125 characters an actual Facebook limit?
No. It is the length Meta recommends for primary text, and it works as a planning proxy for where the mobile feed collapses copy behind "See more". The real cut is a line count in a fluid-width container, so it moves with device width, font size, language and your own line breaks. This tool cuts at 125 characters on a word boundary so you can see roughly what stays visible, and it separately reports where your first line break falls, because a break earlier than that shortens the visible block further.
Why does the awareness stage change the structure and not just the words?
Because each stage requires a different first move. Unaware copy has to describe a situation before it can name a problem. Problem-aware copy names the pain and introduces a mechanism. Solution-aware copy argues for one approach over another. Product-aware copy leads with the offer and handles the last objection. Those are four different argument shapes, so the tool builds different structures rather than swapping adjectives, and it labels the structure it used above each variant.
Should I write anything in the link description field?
Write one if you have a genuine qualifier to add, such as a price floor or an eligibility condition, and accept that many people will never see it. Stories and Reels do not render it and several feed formats drop it. The test is simple: delete the description and reread the ad. If it still makes sense, the description was doing its proper job as a bonus. If it does not, move that information into the primary text.
How does the tool decide where my offer sits in the copy?
It searches the generated primary text for the first few words of your offer and your pain, then reports the character position where each first appears and whether that position is inside or past the 125-character cut. That is a literal string position, not an interpretation, so if you write an offer in one form and the copy paraphrases it, the tool will tell you it is absent rather than guessing.
Do emoji count as one character?
Not reliably. The counter here counts code units, so many emoji register as two, and a visual counter would give a different answer again because an emoji occupies more width than a letter of the same count. If you use emoji at the start of primary text, assume they cost more of your visible block than the number suggests, and check the preview in Ads Manager before publishing.
Related free tools
- ROAS Break-Even Calculator Paid ads
- Ad Angle Generator Paid ads
- Landing Page Message Match Auditor Paid ads
- SEO Meta Tag Generator for ecommerce product pages SEO
- SEO Meta Tag Generator for local business SEO
Some links on this site are affiliate links, which means Hacking Demand may earn a commission if you buy through them at no extra cost to you. This does not influence which tools are listed. The tools on this page are free and have no affiliate relationship of any kind.