Originally published on metablast.dev.
Open your landing page source and find the <meta name="description"> tag. Go ahead, I'll wait. If you found a tight, human sentence that tells someone exactly what they get when they click, you're already beating most of the indie SaaS sites I look at. If you found nothing, or the first 155 characters of your cookie banner, or a wall of comma-separated keywords from 2014, this one's for you.
The meta description is the only piece of marketing copy that runs before anyone visits your site. It's your one free ad on the most valuable real estate on the internet. And almost everyone treats it like an afterthought.
Why meta descriptions matter (more than you think)
Let's kill the biggest myth first. Google does not use your meta description as a ranking signal. They confirmed this back in 2009 and have repeated it many times since. You can write the most beautiful 150 characters of your life and it will not move you up a single position.
So why bother?
Because ranking gets you seen. The description gets you clicked. Those are two completely different jobs, and you need both. You can rank #3 and lose to the #5 result if their snippet is sharper than yours. Click-through rate from search is a real lever, and the description is the part of it you actually control.
Then there's the second job most people forget: social. Your <meta name="description"> often becomes the fallback text when someone drops your link in Slack, Discord, or a tweet, at least when you haven't set a proper Open Graph description. Pair it with og:description and you control how your link looks the moment it leaves your site and starts traveling.
Here's a concrete contrast. Two project management tools, same search results page.
The first one shipped this:
<meta name="description" content="Home | TaskLoop">
Google had nothing to work with, so it grabbed the first scrap of text it found on the page. The snippet ended up reading "Skip to content. Login. Sign up. Features Pricing." Nobody clicks that.
The second one wrote this:
<meta name="description" content="Plan sprints, assign tasks, and ship on time. TaskLoop keeps small teams in sync without the enterprise bloat. Free for up to 5 people.">
Same product category. One snippet looks like a parsing error. The other tells you who it's for, what it does, and that you can start for free. Guess which one earns the click.
The technical rules nobody tells you
Length: aim for 120-155 characters. You'll see "160" everywhere. Ignore it. Google measures the snippet in pixels, not characters, and the cutoff is tighter on mobile, where most of your search traffic now lives. 155 characters is the safe ceiling where your full sentence survives on a phone screen. Go past it and your closing thought gets replaced with an ellipsis. The most important words should land in the first 120 characters, because that's what shows no matter what device someone's on.
Where it goes. Inside <head>, alongside your title and Open Graph tags. Nothing fancy:
<head>
<title>TaskLoop, sprint planning for small teams</title>
<meta name="description" content="Plan sprints, assign tasks, and ship on time. Free for up to 5 people.">
<meta property="og:title" content="TaskLoop, sprint planning for small teams">
<meta property="og:description" content="Plan sprints, assign tasks, and ship on time. Free for up to 5 people.">
</head>
Note the og:description repeating the value. You can write a different, more casual one for social if you want, but at minimum don't leave it empty.
Characters that quietly break things. Your description lives inside an HTML attribute wrapped in double quotes. So a raw double quote inside your copy ends the attribute early and mangles your tag. Use single quotes inside, or escape with ". Em-dashes and curly quotes are fine in modern UTF-8 pages but will turn into garbage like รขโฌ" if your encoding is misconfigured, so confirm you've got <meta charset="utf-8"> set before you get clever with typography. When in doubt, a plain hyphen never betrays you.
How Google decides whether to even use what you wrote. This is the part that frustrates people. You write a great description, and Google ignores it and generates its own. It does this when it thinks its auto-generated snippet matches the specific search query better than your static text. For a broad query like your brand name, Google usually respects what you wrote. For a long-tail query, it might pull a more relevant sentence straight from your page body. You can't force it. What you can do is make sure both your description and your on-page copy are good, so whichever one Google picks, you win.
5 patterns that actually get clicks
1. Question + immediate answer. Use it when your audience is searching with a problem in their head, not a product name. You mirror their question, then resolve it in the same breath. "Tired of flaky CI? PipeGuard re-runs failed jobs automatically and tells you which test is actually broken." It works because you've proven you understand the pain before asking for anything.
2. Specific numbers + outcome. Numbers stop the eye and signal that you're not bluffing. "Cut your build times by 60%" beats "make your builds faster" every time. Vague claims read like marketing. Specific ones read like results. Just don't invent the number. If it's not true, your bounce rate will tell on you.
3. Benefit + proof point. Lead with what they get, then back it with something concrete: a customer count, a logo, a metric. "Write blog posts in your own voice. Inkwell learns your style from 3 samples and 4,000 writers already use it daily." The benefit pulls them in; the proof makes them trust it.
4. Urgency without spam. Real urgency comes from a real reason: a free tier expiring, a limited beta, a price increase. "Free during beta" is honest urgency. "ACT NOW!!! LIMITED TIME!!!" is the kind of thing that makes people scroll past on reflex. The line is whether the urgency is true. If it is, say it plainly.
5. Match exact search intent. This is the most underrated one. If someone searches "linear alternative for solo devs," the snippet that says exactly "A Linear alternative built for solo developers" will out-click anything cleverer. You're not writing poetry. You're confirming they found the right page. Sometimes the most boring, literal description is the best-performing one.
7 mistakes I see on most new SaaS sites
1. No description at all. This is the most common and the most expensive. With the tag empty, Google scrapes whatever text it finds first, often your nav or a "Skip to content" link. You hand control of your first impression to a scraper. Always write something.
2. Keyword stuffing. "Project management tool, task tracker, team collaboration software, agile sprint planning app, kanban board." This reads like a robot wrote it for another robot, and humans skip it. It also doesn't help ranking, because, say it with me, descriptions aren't a ranking factor. Write for the person, not the index.
3. Too long. You wrote a great 200-character description and felt productive. Then it got chopped at "...and our intuitive dashboard helps teams" on mobile, and your call to action lives in the part nobody sees. Front-load the value. Assume the back half gets cut.
4. Generic corporate speak. "Welcome to our innovative platform that empowers teams to unlock their full potential." That sentence describes 10,000 products and zero of them specifically. It says nothing, so it sells nothing. Be concrete or be silent.
5. No reason to click. Some descriptions describe the page accurately and still flatline because they give no hint of what's in it for the reader. You don't need a hard CTA on every page, but the snippet should imply a next step: what they'll get, do, or solve. "See how it works" beats a flat product noun.
6. Bait and switch. The description promises a free template library; the page is a pricing wall. You'll get the click and lose the trust in three seconds, and that bounce is a worse signal than no click at all. Your snippet is a contract. Honor it.
7. The same description on every page. Your homepage, pricing page, and docs all sharing one description is a missed opportunity and, at scale, a quiet penalty. Google flags duplicate descriptions in Search Console for a reason. Each page does a different job. Each description should too.
How to test before shipping
You don't need a fancy tool to catch the obvious failures. Google Search Console's URL Inspection shows you how Google currently renders your page, and over time tells you whether it's using your description or substituting its own. That's your single best feedback loop.
For the snippet itself, the cheap move is to just look at it on a real phone. Desktop gives you generous room; mobile is where descriptions die. Paste your title and description into any SERP preview tool, then sanity-check it at phone width. If the meaning survives the truncation, you're good. If the sentence only makes sense complete, rewrite it so the first half stands alone.
For pages that drive real traffic, your homepage, your top landing page, it's worth A/B testing the description. Change the snippet, wait for enough impressions in Search Console, and compare CTR. Most pages won't have the volume to make this meaningful, so don't waste your life testing a blog post nobody reads. Reserve it for the two or three URLs that actually matter.
When to write manually vs use AI
Be honest with yourself about where the effort pays off.
Write manually for the handful of pages that carry your brand: the homepage, your primary product pages, the key landing pages you're running ads to. These deserve a human who knows the product and the audience. They're a small set. You can afford the twenty minutes each.
Lean on AI when the volume gets real. A content site with 80 blog posts, a docs site, a programmatic SEO play with hundreds of pages: nobody is hand-writing 200 descriptions, and pretending you will just means you'll ship 200 empty tags. This is exactly where generation earns its keep: consistent, intent-matched, length-correct descriptions at a scale that manual work can't touch.
The realistic answer for most indie hackers is a hybrid. Hand-craft your five most important pages. Generate the long tail. Spot-check the generated ones and fix the few that miss. That's not a compromise, it's just allocating your attention where it changes the outcome.
That's the workflow I built MetaBlast around, but you can pull this off with any decent generator. The point is that hand-writing 200 descriptions isn't a virtue, it's just lost time.
TL;DR
- Length: 120-155 characters. Front-load the value in the first 120.
- Intent: Match what the person actually searched. Literal beats clever.
- One job per page: Unique description per URL, never a global copy-paste.
- Mobile first: Preview at phone width. Assume the back half gets cut.
- Don't lie: The snippet is a contract with the click. Honor it.
- Test the ones that matter: Search Console for everything, A/B only for high-traffic pages.
- Iterate: CTR is feedback. Watch it, rewrite, repeat.
I built MetaBlast because I got tired of doing this by hand across every project I launched. It reads your page, figures out what it's actually about, and writes a length-correct, intent-matched description, plus the Open Graph and title tags while it's at it. If you're staring at a sitemap full of empty description tags right now, that's the use case.
Top comments (0)