Vegetable ferment salt calculator
1,000 g of shredded cabbage at 2% needs 20 g of salt. Enter the vegetable weight, the water if you use brine, and your target percentage, and the calculator applies it to the total weight and returns the salt in the same unit. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Vegetable weight
- 1,000
- Water weight
- 0
- Percentage
- 2
- Total weight
- 1,000
- Salt weight
- 20
Lacto-fermented vegetables depend on a measured salt percentage so beneficial lactic acid bacteria thrive while spoilage organisms stay in check. Home fermenters, recipe writers, and meal-prep tools need a clear answer for how many grams of salt to weigh when cabbage, cucumbers, or mixed vegetables share a jar with optional water. This vegetable ferment salt percentage calculator takes vegetable weight, water weight, and a chosen salt percentage, applies the total-weight formula salt equals vegetable plus water times percentage over one hundred, and returns the exact salt mass in the same unit you used for the produce. Dry-salt sauerkraut uses zero water; brine-style pickles include the liquid.
Why salt percentage matters and what the formula computes
In vegetable fermentation, salt draws water from plant cells, creates a selective environment for lactic acid bacteria, and helps keep texture firm. Cookbooks and fermenting guides usually express the target as a percentage of total weight rather than a fixed teaspoon count, because a large cabbage head needs more salt than a single cucumber even when both aim for the same two percent brine strength.
The calculator implements the widely taught total-weight method: add the vegetable mass to the water or brine liquid mass, then multiply that sum by the percentage divided by one hundred. For classic dry-salt sauerkraut you shred the cabbage, set water weight to zero, and still get salt as a percentage of the vegetable alone. For cucumber pickles or mixed vegetable ferments where you pour brine over packed produce, include both the produce weight and the water weight so the salt concentration reflects everything in the jar.
Typical safe kitchen ranges land near one and a half to three percent for many vegetables; hotter climates or longer ferments sometimes push slightly higher. This tool does not prescribe a single medical or food-safety standard—it computes the arithmetic so you can apply the percentage your trusted recipe or local guidance recommends, with transparent fields you can pin in tests and SOPs.
What you can do with it
Brine pickles and mixed jars
Include both produce and water weights so cucumber or mixed-vegetable ferments hit a consistent percentage across different jar sizes.
FAQ
What percentage should I use for sauerkraut or pickles?
Many home ferment guides target about 1.5–3% of total weight. This calculator does not prescribe a single rate—it applies the percentage you choose so you can follow your recipe or trusted guidance.
Is the vegetable ferment salt calculator free?
The browser tool runs free on your device.
Should I include the water in the weight?
Yes, when you pour brine over the vegetables. For 1,000 g of cucumbers plus 500 g of water at 2.5%, the salt is 37.5 g. For dry-salted sauerkraut, set the water to zero.
Can I weigh in ounces instead of grams?
Yes, as long as the vegetables and the water use the same unit. The calculator does pure arithmetic and gives the salt back in that unit without converting anything, so grams on a kitchen scale are the simplest choice.
Does the calculator tell me whether my ferment is safe?
No. It does not set a food-safety standard. It computes the salt for the percentage your trusted recipe or local guidance recommends; many vegetables land between 1.5 and 3 percent.
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/cook/fermentation-salt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vegetable_weight":1000,"water_weight":0,"percentage":2}'const res = await fetch("https://api.kit.forhosting.com/cook/fermentation-salt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vegetable_weight": 1000,
"water_weight": 0,
"percentage": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/fermentation-salt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vegetable_weight": 1000,
"water_weight": 0,
"percentage": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/fermentation-salt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vegetable_weight":1000,"water_weight":0,"percentage":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vegetable_weight":1000,"water_weight":0,"percentage":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/fermentation-salt", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"vegetable_weight": 1000,
"water_weight": 0,
"percentage": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.fermentation_salt",
"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.
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
The free browser path and the prepaid API share one deterministic pure function, so kitchen checklists and automated recipe systems never disagree on a two-percent batch.
Input contract, units, response fields, and invalid cases
Example: one thousand grams of cabbage, zero water, and two percent yields twenty grams of salt; one thousand grams of cucumbers plus five hundred grams of water at two and a half percent yields thirty-seven point five grams of salt. Send three required finite numbers in a JSON body: vegetable_weight as a positive mass of vegetables, water_weight as a non-negative mass of water or liquid brine (zero allowed for dry salt), and percentage as the salt target strictly greater than zero and at most one hundred. Numeric strings are accepted the same as JSON numbers. Aliases such as veg, vegetables, water, liquid, salt_percent, percent, and pct are recognized so recipe importers need less field mapping. Keep the unit consistent across vegetable and water—grams are recommended for kitchen scales—because the engine performs pure arithmetic and returns salt_weight in that same unit without converting ounces to grams. On success the response echoes the rounded inputs, total_weight as the sum of vegetable and water, salt_weight as the salt to measure, method fixed as total_weight_percentage, and a formula string restating the equation for UI legends and API documentation. Missing fields, non-finite values, zero or negative vegetable weight, negative water, and percentage outside the open-closed interval from zero exclusive to one hundred inclusive all fail with invalid_input and are not billed.
Browser use, API pricing, workflows, and practical limits
Use the free in-browser vegetable ferment salt percentage calculator when packing a single jar at home, teaching a workshop, or checking a printed recipe against a kitchen scale. The calculator does not monitor jar temperature, does not estimate fermentation days, and does not replace clean equipment, quality produce, or food-safety judgment. Use the prepaid API when a fermentation app, meal-kit builder, CSA recipe site, or batch kitchen script needs the same deterministic contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with recipe scaling tools when you double a master ferment formula, but keep salt percentage calculation separate so you can change jar size without inventing a new percentage.
Integration use cases
Home sauerkraut and kimchi
Weigh shredded cabbage or mixed vegetables, set water to zero for dry salt or include rinse liquid, enter 1.5–3% salt, and measure the returned salt_weight on a kitchen scale.
Recipe apps and batch kitchens
Automate salt dosing in meal kits, CSA recipe cards, and production SOPs with a deterministic total-weight percentage API at $0.002 per successful item.
Technical questions
How do I calculate salt for vegetable fermentation?
Send vegetable_weight, water_weight, and percentage. Salt equals (vegetable_weight + water_weight) × (percentage / 100) in the same mass unit you used for the vegetables and water.
Can water_weight be zero?
Yes. Use water_weight 0 for dry-salt ferments such as classic sauerkraut where salt is a percentage of vegetable weight alone.
What units does the vegetable ferment salt calculator use?
Any consistent mass unit (grams recommended). The engine does not convert units; salt_weight is returned in the same unit as vegetable_weight and water_weight.