Price to sales ratio calculator
A market capitalization of 500,000,000 against total revenue of 250,000,000 gives a price-to-sales ratio of 2: the market values the equity at twice its annual sales. Useful when earnings are negative or too thin. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Market cap
- 500,000,000
- Total revenue
- 250,000,000
- Price to sales
- 2
Investors who compare unprofitable or thinly earning companies still need a valuation multiple that does not depend on net income. The price-to-sales ratio supplies that print: market capitalization divided by total revenue, in one currency, for the same reporting date. A result of three means the equity is priced at three times sales; a result of one is a conventional low-multiple print in grocery or wholesale comps.
What the price-to-sales ratio measures and how the multiple is formed
The price-to-sales ratio answers a single comps question: how many years of current sales does the market pay for the equity of the firm? Searchers who type price to sales ratio calculator want that quotient from market capitalization, not an enterprise-value-to-sales multiple that starts from firm value and therefore folds net debt into the numerator, not a price-to-earnings print that requires positive net income, and not a spreadsheet that silently changes the decimal separator.
Market capitalization is the numerator: share price times diluted shares outstanding on the same date as the revenue figure, in one currency. Total revenue is the denominator: trailing twelve-month sales or the same forward year a teaser uses, in that same currency. A ratio of 2.0 means the equity is priced at two times sales.
A ratio of 1x is a conventional grocery or wholesale print; high-growth software comps often sit several times higher. The calculator does not rebuild market cap from price and share count, does not annualize a stub quarter, and does not apply a sector hurdle: those belong on the comps tape.
What you can do with it
Unprofitable comps and growth screens
Turn reported market capitalization and total sales into the P/S print a comps table will rank when net income is still negative or too thin to use a price-to-earnings multiple.
Teaser and filing checks
Paste advertised market cap and total revenue from a teaser or a 10-K so the implied sales multiple is visible before a football-field chart is built.
FAQ
What happens if total revenue is zero or negative?
Price-to-sales is a quotient, so a zero or negative denominator is undefined and is not billed.
Can market capitalization be zero?
Negative market cap is also accepted as a finite numerator.
Is price-to-sales the same as EV/Sales?
No. EV/Sales divides enterprise value by sales. This calculator divides market capitalization by total revenue, so net debt stays out of the numerator.
Why use price-to-sales instead of the price-to-earnings ratio?
Because price-to-earnings needs positive net income, which unprofitable or barely profitable companies do not have. Price-to-sales does not depend on net income, so it still lets you rank those companies in a comparison table.
Which revenue figure should I use?
Use the last twelve months of sales, or the same forward year everyone else in your comparison uses, in the same currency and for the same date as the market capitalization. Mixing periods makes the ratio meaningless.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/price-to-sales-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"market_cap":500000000,"total_revenue":250000000}'const res = await fetch("https://api.kit.forhosting.com/fin/price-to-sales-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"market_cap": 500000000,
"total_revenue": 250000000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/price-to-sales-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"market_cap": 500000000,
"total_revenue": 250000000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/price-to-sales-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"market_cap":500000000,"total_revenue":250000000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"market_cap":500000000,"total_revenue":250000000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/price-to-sales-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"market_cap": 500000000,
"total_revenue": 250000000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.price_to_sales_ratio",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs_value | 1000000000000000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
This tool accepts those two finite amounts, divides market capitalization by total revenue, and returns the ratio as a deterministic JSON contract you can pin in tests. Zero or negative revenue is rejected with invalid_input rather than Infinity or a signed multiple a form might treat as a bargain.
What the price-to-sales ratio measures and how the multiple is formed
This tool divides those two finite amounts and returns price_to_sales. Because division by zero is undefined, and because negative revenue does not produce a usable trading multiple in the way a comps table or a credit memo uses the figure, a total_revenue of zero or less fails with invalid_input instead of Infinity, NaN, or a signed multiple a form might treat as a bargain.
Input contract, response shape, and error behaviour
Negative revenue is likewise rejected, because a negative denominator is not the price-to-sales ratio a comps table describes. POST a JSON body that supplies market_cap and total_revenue. market_cap is the equity market value in a single currency unit, a finite number that may be zero and then yields a price-to-sales ratio of zero, with aliases market_capitalization, mkt_cap, marketcap, and equity_value. total_revenue is trailing or forward sales in the same currency, a finite number that must be strictly greater than zero, with aliases revenue, sales, sales_ttm, revenue_ttm, and annual_revenue. Each numeric field may arrive as a JSON number or as a numeric string in ordinary decimal notation. Missing market_cap, missing total_revenue, empty strings, non-finite values, or a magnitude above the declared limit fail with invalid_input naming the field and are not billed. Zero revenue is the error this landing exists to catch: the message contains total_revenue and greater than zero so a form can highlight that control instead of showing a global alert. On success the body echoes both inputs, returns price_to_sales as the rounded quotient, and includes a formula string restating the identity price_to_sales equals market_cap divided by total_revenue. Example: market_cap of five hundred million against total_revenue of two hundred fifty million yields price_to_sales of 2. Example: market_cap of one billion two hundred million against three hundred seventy-five million of sales yields a non-integer multiple rather than a silent empty payload. Pair the multiple with your own sector median if the memo needs a cheap or expensive flag; this endpoint computes the valuation ratio only and does not invent a comps verdict.
Where a price to sales ratio calculator earns its keep
Equity research, buy-side screens, and student models rank for a price to sales ratio calculator because a comps table thinks in P/S when earnings are thin or still negative, not in a raw share price. Corporate development associates live on teaser figures; dividing advertised market cap by advertised sales gives the same print without forcing anyone to remember whether a cell already subtracted returns. Educators teaching CFA-style valuation can seed classroom examples that fail loudly on zero or negative revenue instead of printing Infinity a student might treat as infinite cheapness. Failed validation does not consume balance. Public-markets scanners use the same identity on filing market cap against reported revenue, and the JSON contract does not care which story produced the numerator. Keep total_revenue strictly positive, pin the rounded price_to_sales field in tests, and you get a reproducible valuation multiple for widgets, course modules, and edge workers without standing up a comps engine of your own. Portfolio scripts can call the same module in a loop over many tickers; each item is one request, the unit is item, and the free browser path remains byte-for-byte identical to the API so a landing-page preview never lies about the figure that will be stored after a save.
Integration use cases
Classroom and CFA valuation drills
Seed examples that return a rounded multiple on positive revenue and fail loudly when total_revenue is zero or negative.
Technical questions
How is the price-to-sales ratio calculated from market capitalization and total revenue?
Send finite numbers market_cap and total_revenue. The API returns price_to_sales as market_cap divided by total_revenue, rounded to six decimal places.
What does the price to sales ratio calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.