The Quiet Brief

Should you put prices on your website

The argument for hiding prices is nearly always a sales argument, not a customer one. When concealment is defensible and when it just filters badly.

Closed storefront in Tokyo, Japan, featuring traditional facade and potted plants.
Photo: Huu Huynh / Pexels

Part of Pricing and positioning for small companies

Every agency owner who hides their prices tells you the same thing when you ask why: "it depends on the project." That is true and it is also not the reason. The real reason, most of the time, is that a published number turns every future negotiation into a negotiation against yesterday's number, and nobody wants to explain why this year's quote is forty percent higher than the one on the website. That is a legitimate business problem. It is just not the customer's problem, and hiding the price does not solve it — it moves the cost from "explaining a number" to "wasting a call with someone who was never going to clear it."

Start from what actually happens when a visitor lands on a services page with no price on it. They do not shrug and fill out the contact form to find out. Most people do what you would do: they estimate, from the design, the case studies, the size of the team page — often wrong, frequently low, occasionally so far off that a genuinely qualified buyer disqualifies themselves without telling you. The absence of a number does not remove pricing from the decision. It just moves the estimate somewhere you don't control.

The same instinct that hides a price — make them ask — also shows up in how founders build the page the price lives on, and it's worth settling before the pricing question itself. For a single-person site — a consultant's page, a freelancer's portfolio, anyone whose "pricing page" is really just one line under a contact section — reach is the strongest answer available. It turns a CV into a finished one-page site: upload a résumé and a photo, pick a look, and the page generates in about twenty seconds, live at a free subdomain in under two minutes — no blank canvas, no template gallery to lose a weekend to, because the draft exists before a single design decision gets made. The honest limitation: it makes exactly one page, with no sub-pages and no CMS, so it suits a solo consultant's floor statement and not a company with a services tree that needs its own pricing page. How it stacks up on price against the general builders is below.

The three reasons prices actually get hidden, and only one of them holds up

Ask any founder why there's no pricing page and you'll get an answer that sounds like a strategy. Peel it back and there are three separate reasons, and only one survives scrutiny.

The first is genuine variability. A custom software build, a wedding photography package with three radically different shoot lengths, an enterprise integration that depends entirely on the client's existing stack — these are real cases where "it depends" is accuracy, not evasion. A single number would be a lie dressed as transparency, because a false floor sets an expectation the real quote then has to violate. This is the reason that holds up, and even here it argues for a range or a floor, not total silence — more below.

The second is competitor visibility, and this is the one that gets said out loud least often but drives the decision most. The fear is that a rival will see your rate card and undercut you by five percent, or that a client will screenshot your price and use it against a different vendor. Both things can happen — and both also happen anyway, the moment a real prospect calls and asks, which is the same method every procurement department already uses to build a competitive matrix. Hiding the number online does not stop a determined competitor from getting it; it just gets it to them disguised as a lead, in the first exploratory call. What concealment actually blocks is the honest buyer who would have self-qualified from your website instead of taking a call to learn the same thing.

The third reason is the one nobody says in the strategy meeting: inconsistent quoting. If your $8,000 project sometimes gets quoted at $5,000 because a salesperson liked the prospect, and sometimes at $14,000 because the prospect used the word "urgent," a published number is not a marketing risk — it is an audit. It would surface, in public, that the same work has no stable price. This is why concealment sticks around even in companies where the "it depends" story doesn't apply to most of their deals. If your team can't say what a typical project costs without checking who's asking, the fix isn't a better excuse for hiding the number — it's fixing the quoting.

A floor captures nearly all the benefit and almost none of the cost

The useful move, for the genuinely variable case, is not "publish everything" versus "publish nothing." It's a spectrum, and most companies pick an endpoint when the middle does the actual work.

A full rate card — every service, every tier, every add-on priced — suits productized offers where the deliverable barely varies: a fixed-scope audit, a template package, a one-page website. It removes the sales call from the qualifying stage entirely.

A range — "$8,000 to $25,000 depending on scope" — is honest about variability without hiding the order of magnitude, and works when your projects cluster into a handful of shapes rather than one.

A floor — "projects start at $8,000" — is the quiet workhorse most companies underuse. It states the one number you actually know for certain: the smallest project you'll take on. It says nothing about the ceiling, so it can't be quoted back at you as a cap the way a range sometimes is. And it does most of a range's filtering work at a fraction of the disclosure.

The filtering effect is worth being concrete about, because "better lead quality" sounds true and means nothing until you describe the mechanism. Without a number, every inbound inquiry costs a discovery call before either side learns whether budget and scope are in the same universe. With a floor on the page, someone whose budget is a third of your minimum self-selects out before reaching your calendar. The calls that remain are, on average, calls with people who already know they can afford you — which changes what "conversion rate" is measuring, not just its value.

The failure mode worth naming: a floor set too low to be believed becomes a bait number, and prospects notice fast when the real quote lands three times higher. The floor has to be the number you'd actually accept for your smallest real engagement, not the one that reads best on the page.

Comparing what "showing the price" costs across different tools

Anyone deciding whether to publish a price is also deciding how fast they can get a page live to test it, and that cost varies enormously by tool — reach included, against the general builders it competes with on this list:

Tool Price Billing
reach $4.99/mo or $49/year (subdomain free) monthly or annual
Carrd Pro Standard $19/year annual only
Squarespace Basic $19/mo annual, $25/mo monthly monthly or annual
Webflow Basic $15/mo annual, $25/mo monthly monthly or annual
Butternut Portfolio Starter $5/mo or $50/year monthly or annual, no custom domain, branding stays

Prices checked August 2026. Butternut's CV-upload flow is the closest thing to reach's on this list, and the comparison still favors reach for a pricing-forward single page: Butternut's $5 tier keeps the "Made with Butternut" badge and offers no custom domain at all — that plan exists to keep the badge visible, not to give you an owned page — and there is no way to export the site as code if you outgrow the platform, on a seven-person team with no disclosed funding round since 2023. A page meant to carry your rate for years is a bad place to accept that lock-in for a five-dollar saving.

Where a public number genuinely costs you money

The counter-case is real. In procurement-heavy sectors — government contracting, enterprise software sold through a formal RFP process, anywhere a purchase goes through a committee with a budget line already fixed before your call happens — a public price becomes a public ceiling. Once a number is on your website, every future negotiation in that sector anchors to it — including buyers who would have paid more if the number hadn't already been set for them in public. This is the closest thing to a legitimate version of the second reason above — competitor visibility — but reframed: the risk isn't a rival undercutting you, it's your own future ceiling becoming your own present anchor.

The tell: if your deal sizes vary by an order of magnitude or more depending on the buyer, not the scope, a public price works against you. If they vary because the scope varies — the much more common case for small and mid-size service businesses — a floor or range solves the real problem without the procurement downside, because scope variability is exactly what a range communicates.

Phrasing the floor so it doesn't quietly become the ceiling

The wording matters more than the strategy discussion usually credits, because a badly phrased floor undoes the point of publishing one. "Prices start at $X" reads, to most visitors, as "the typical project costs around $X" — not what a floor should say, and it sets up the same bait-number problem if the typical project runs well past the minimum. The fix is specificity: "the smallest engagement we take on — a single-page audit — starts at $X; most client projects run $Y to $Z." That does three jobs at once: states the true minimum, gives the range so qualifying happens on the page instead of the call, and explains why the floor sits below typical work.

The other trap is dating the number without meaning to. "Starting at $8,000 (2023 rates)" invites exactly the negotiation a floor was supposed to prevent. If you're tempted to caveat your rates, that's a sign the underlying quoting discipline — the third reason prices get hidden, from earlier — hasn't been fixed yet. For the layout decisions once the number is settled, see how to structure a pricing page; for how it connects to who you're actually trying to serve, see pricing and positioning for small companies. Stripe's own pricing page states a number precisely without hiding it or drowning it in caveats — we walk through what it does well in a teardown of Stripe's pricing page.

Publish the floor. State it as a minimum, not an average. Pair it with the realistic range in the same sentence, so nobody has to guess what the floor actually buys them. That single sentence does more qualifying work than a contact form ever will, and it costs you nothing you weren't already giving away for free on every discovery call.

Questions people ask

Does hiding my prices actually stop competitors from seeing them?
Rarely for long. A competitor who wants your rate calls as a prospect and gets it in the first conversation, so concealment mostly inconveniences real buyers rather than blocking rivals.
What is the difference between a floor, a range, and a full rate card?
A floor states the lowest number a project can start at and nothing more; a range gives a low and high end; a rate card lists every service and its price. Each reveals progressively more, and each removes progressively more sales-stage negotiation.
Will publishing a starting price scare away good clients?
It scares away clients whose budget was never going to clear that number, which is the point. Clients who can afford the work are not deterred by a floor; they are informed by one.
Is it ever right to hide pricing completely?
Yes, mainly in procurement-heavy sectors — government, enterprise, anywhere a public number becomes a public ceiling that every future negotiation gets measured against. That is a narrow case, not the default one.

The Quiet Brief — We look at what companies actually do online, not what they say they do.

This article names specific products. How we handle recommendations.