{"protocol":"uctool/1","engine":"catalog-2026-10-30.1","tools":[{"id":"standard","name":"Standard Calculator","category":"math","description":"Everyday arithmetic, with a little more room to think.","keywords":["basic","arithmetic","add","subtract","multiply","divide"],"fields":[],"formula":"Parentheses → powers → multiplication and division → addition and subtraction.","explanation":"Calculate with standard order of operations, keyboard support, and a reusable history. A postfix percentage divides a value by 100.","example":"(12,500 × 0.18) + 2,000 = 4,250","featured":true},{"id":"scientific","name":"Scientific Calculator","category":"math","description":"Powers, roots, logarithms, and trigonometry in one place.","keywords":["sin","cos","tan","trigonometry","logarithm","powers","roots"],"fields":[],"formula":"Use sin(x), cos(x), tan(x), sqrt(x), ln(x), log(x), x^y, and n!.","explanation":"Switch between degrees and radians for trigonometric functions. Results are real numbers; expressions outside a real function’s domain show an explanation.","example":"sin(30) × 100 = 50 in degree mode."},{"id":"percentage","name":"Percentage Calculator","category":"math","description":"Find a percentage of any amount, instantly.","keywords":["percent","portion","share"],"fields":[{"key":"percentage","label":"Percentage","type":"number","default":18,"unit":"%","step":"any"},{"key":"amount","label":"Of this amount","type":"number","default":12500,"step":"any"}],"formula":"Part = amount × percentage ÷ 100","explanation":"A percentage represents a value per hundred. This calculator also shows the amount after adding or subtracting that percentage.","example":"18% of 12,500 is 2,250.","featured":true},{"id":"percentage-change","name":"Percentage Change","category":"math","description":"Measure the increase or decrease between two values.","keywords":["growth","increase","decrease","difference"],"fields":[{"key":"oldValue","label":"Original value","type":"number","default":80,"min":0,"step":"any"},{"key":"newValue","label":"New value","type":"number","default":100,"step":"any"}],"formula":"Change (%) = (new − original) ÷ original × 100","explanation":"The original value must be greater than zero so that a relative change is meaningful. A negative result indicates a decrease.","example":"An increase from 80 to 100 is 25%."},{"id":"ratio","name":"Ratio Simplifier","category":"math","description":"Reduce a whole-number ratio to its simplest form.","keywords":["proportion","simplify","gcd"],"fields":[{"key":"a","label":"First value","type":"number","default":4,"min":0,"step":1},{"key":"b","label":"Second value","type":"number","default":6,"min":1,"step":1}],"formula":"Simplified ratio = (a ÷ gcd(a,b)) : (b ÷ gcd(a,b))","explanation":"Divide both terms by their greatest common divisor. The decimal ratio is the first value divided by the second.","example":"4 : 6 simplifies to 2 : 3."},{"id":"fraction","name":"Fraction Calculator","category":"math","description":"Add, subtract, multiply, and divide exact fractions.","keywords":["numerator","denominator","rational","simplify"],"fields":[{"key":"numeratorA","label":"First numerator","type":"number","default":1,"step":1},{"key":"denominatorA","label":"First denominator","type":"number","default":2,"step":1},{"key":"operation","label":"Operation","type":"select","default":"+","options":[{"value":"+","label":"Add (+)"},{"value":"-","label":"Subtract (−)"},{"value":"*","label":"Multiply (×)"},{"value":"/","label":"Divide (÷)"}]},{"key":"numeratorB","label":"Second numerator","type":"number","default":1,"step":1},{"key":"denominatorB","label":"Second denominator","type":"number","default":3,"step":1}],"formula":"a/b + c/d = (ad + bc)/(bd); a/b × c/d = ac/(bd)","explanation":"Fractions are calculated exactly with whole-number arithmetic and reduced to lowest terms. Denominators cannot be zero.","example":"1/2 + 1/3 = 5/6."},{"id":"quadratic","name":"Quadratic Equation","category":"math","description":"Solve ax² + bx + c = 0, including complex roots.","keywords":["algebra","polynomial","discriminant","roots"],"fields":[{"key":"a","label":"Coefficient a","type":"number","default":1,"step":"any"},{"key":"b","label":"Coefficient b","type":"number","default":-5,"step":"any"},{"key":"c","label":"Coefficient c","type":"number","default":6,"step":"any"}],"formula":"x = (−b ± √(b² − 4ac)) ÷ (2a)","explanation":"The discriminant determines whether the equation has two real roots, one repeated real root, or a complex conjugate pair. The leading coefficient must be nonzero.","example":"x² − 5x + 6 = 0 has roots 2 and 3."},{"id":"statistics","name":"Statistics Calculator","category":"math","description":"Find the mean, median, spread, and more for a data set.","keywords":["average","mean","median","mode","variance","standard deviation"],"fields":[{"key":"numbers","label":"Your numbers","type":"textarea","default":"12, 15, 18, 18, 22, 25","hint":"Separate numbers with commas, spaces, or new lines. Do not use thousands separators."},{"key":"type","label":"Variance and standard deviation","type":"select","default":"population","options":[{"value":"population","label":"Population (divide by n)"},{"value":"sample","label":"Sample (divide by n − 1)"}]}],"formula":"Mean = Σx/n; population variance = Σ(x − mean)²/n","explanation":"Use population statistics for the entire group you are describing, or sample statistics when your data estimates a larger population. Sample variance requires at least two values.","example":"The mean of 12, 15, 18, 18, 22, 25 is 18.333333."},{"id":"profit-margin","name":"Profit Margin","category":"business","description":"Understand profit as a share of your revenue.","keywords":["gross profit","revenue","cost","margin"],"fields":[{"key":"revenue","label":"Revenue","type":"number","default":10000,"unit":"currency units","min":0,"step":"any"},{"key":"cost","label":"Total costs","type":"number","default":6500,"unit":"currency units","min":0,"step":"any"}],"formula":"Profit margin = (revenue − costs) ÷ revenue × 100","explanation":"Margin divides profit by revenue. Markup divides profit by cost, so the two percentages are different. Include the relevant costs for the kind of margin you want to measure.","example":"10,000 revenue and 6,500 costs produce a 35% margin.","featured":true},{"id":"markup","name":"Markup Calculator","category":"business","description":"Turn your cost and target markup into a selling price.","keywords":["price","pricing","cost plus","margin"],"fields":[{"key":"cost","label":"Item cost","type":"number","default":80,"unit":"currency units","min":0,"step":"any"},{"key":"markupPercent","label":"Markup","type":"number","default":25,"unit":"%","min":0,"step":"any"}],"formula":"Selling price = cost × (1 + markup ÷ 100)","explanation":"Markup is profit as a percentage of cost. A 25% markup yields a 20% margin because margin uses selling price as its denominator.","example":"An 80 cost with a 25% markup gives a 100 selling price."},{"id":"break-even","name":"Break-Even Calculator","category":"business","description":"Know how many sales cover your fixed and variable costs.","keywords":["contribution","fixed costs","units","revenue"],"fields":[{"key":"fixedCosts","label":"Fixed costs per period","type":"number","default":5000,"unit":"currency units","min":0,"step":"any"},{"key":"price","label":"Selling price per unit","type":"number","default":50,"unit":"currency units","min":0,"step":"any"},{"key":"variableCost","label":"Variable cost per unit","type":"number","default":30,"unit":"currency units","min":0,"step":"any"}],"formula":"Break-even units = fixed costs ÷ (price − variable cost)","explanation":"The contribution from each unit pays toward fixed costs. Whole-unit sales are rounded up. Prices, costs, and volume are assumed constant for the period.","example":"5,000 fixed costs and a 20 contribution require 250 units."},{"id":"contractor-rate","name":"Contractor Rate","category":"business","description":"Build a rate around your income, overhead, and billable time.","keywords":["freelance","consultant","independent","hourly","pricing"],"fields":[{"key":"annualIncome","label":"Target annual owner compensation","type":"number","default":90000,"unit":"currency units","min":0,"step":"any"},{"key":"annualOverhead","label":"Annual business overhead","type":"number","default":18000,"unit":"currency units","min":0,"step":"any"},{"key":"targetProfitMargin","label":"Target business profit margin","type":"number","default":10,"unit":"%","min":0,"max":99.99,"step":"any"},{"key":"billableHoursPerWeek","label":"Billable hours per week","type":"number","default":30,"unit":"hours","min":0.01,"max":168,"step":"any"},{"key":"billableWeeksPerYear","label":"Billable weeks per year","type":"number","default":46,"unit":"weeks","min":0.01,"max":52,"step":"any"}],"formula":"Rate = (owner compensation + overhead) ÷ (1 − margin) ÷ annual billable hours","explanation":"Work backward from annual business revenue needed to cover compensation, overhead, and a profit margin. Use billable hours, excluding administration, sales, and time off.","example":"90,000 compensation, 18,000 overhead, 10% margin, and 1,380 billable hours imply about 86.96/hour."},{"id":"employee-cost","name":"Employee Cost","category":"business","description":"Estimate total compensation cost using your own assumptions.","keywords":["employer","salary","benefits","burden","payroll planning"],"fields":[{"key":"salary","label":"Annual gross salary","type":"number","default":60000,"unit":"currency units","min":0,"step":"any"},{"key":"employerLoadPercent","label":"Additional employer costs","type":"number","default":20,"unit":"%","min":0,"step":"any","hint":"Your planning allowance for employer taxes, insurance, and other percentage-based costs."},{"key":"benefits","label":"Other annual fixed benefits","type":"number","default":6000,"unit":"currency units","min":0,"step":"any"},{"key":"annualHours","label":"Annual paid hours","type":"number","default":2080,"unit":"hours","min":0.01,"max":8784,"step":"any"}],"formula":"Annual cost = salary × (1 + employer-cost percentage) + fixed benefits","explanation":"Combine gross salary with your selected employer-cost allowance and fixed benefits. Use nonoverlapping inputs to avoid counting a benefit twice.","example":"60,000 salary + 20% employer costs + 6,000 benefits = 78,000/year."},{"id":"hourly-rate","name":"Salary to Hourly","category":"business","description":"Convert annual salary to an equivalent hourly rate.","keywords":["wage","pay","annual salary","weekly","monthly"],"fields":[{"key":"annualSalary","label":"Annual salary","type":"number","default":60000,"unit":"currency units","min":0,"step":"any"},{"key":"hoursPerWeek","label":"Hours per week","type":"number","default":40,"unit":"hours","min":0.01,"max":168,"step":"any"},{"key":"weeksPerYear","label":"Paid weeks per year","type":"number","default":52,"unit":"weeks","min":0.01,"max":52,"step":"any"}],"formula":"Hourly rate = annual salary ÷ (hours per week × paid weeks)","explanation":"This is a gross-pay equivalence based on your schedule. It does not estimate taxes, overtime premiums, deductions, or take-home pay.","example":"60,000 ÷ (40 × 52) is approximately 28.85/hour."},{"id":"discount","name":"Discount Calculator","category":"business","description":"Calculate a sale price, savings, and optional sales tax.","keywords":["sale","coupon","savings","percent off"],"fields":[{"key":"originalPrice","label":"Original price","type":"number","default":120,"unit":"currency units","min":0,"step":"any"},{"key":"discountPercent","label":"Discount","type":"number","default":25,"unit":"%","min":0,"max":100,"step":"any"},{"key":"taxPercent","label":"Sales tax after discount","type":"number","default":0,"unit":"%","min":0,"step":"any"}],"formula":"Total = original price × (1 − discount ÷ 100) × (1 + tax ÷ 100)","explanation":"The discount is applied first and the entered tax rate is then applied to the discounted price. Retailer rounding and local tax treatment can differ.","example":"25% off 120 saves 30 and produces a 90 price before tax."},{"id":"sales-tax","name":"Sales Tax","category":"business","description":"Add a tax rate or find the tax inside a total.","keywords":["VAT","GST","tax inclusive","subtotal","gross"],"fields":[{"key":"amount","label":"Amount","type":"number","default":100,"unit":"currency units","min":0,"step":"any"},{"key":"rate","label":"Tax rate","type":"number","default":8.5,"unit":"%","min":0,"step":"any"},{"key":"mode","label":"Calculation","type":"select","default":"add","options":[{"value":"add","label":"Add tax to amount"},{"value":"included","label":"Tax is already included"}]}],"formula":"Add: total = subtotal × (1 + rate). Included: subtotal = total ÷ (1 + rate).","explanation":"Use the tax rate that applies to your transaction. This arithmetic tool does not determine local tax rates, exemptions, or filing obligations.","example":"100 plus 8.5% tax is 108.50."},{"id":"concrete","name":"Concrete Calculator","category":"home","description":"Estimate volume and bag count for a rectangular slab.","keywords":["slab","cement","volume","construction","bags"],"fields":[{"key":"length","label":"Length","type":"number","default":5,"unit":"m","min":0.001,"step":"any"},{"key":"width","label":"Width","type":"number","default":4,"unit":"m","min":0.001,"step":"any"},{"key":"thickness","label":"Thickness","type":"number","default":10,"unit":"cm","min":0.001,"step":"any"},{"key":"wastePercent","label":"Extra material allowance","type":"number","default":10,"unit":"%","min":0,"step":"any"},{"key":"bagYield","label":"Yield per bag","type":"number","default":20,"unit":"L","min":0.001,"step":"any","hint":"Use the mixed-concrete yield printed on your chosen bag."}],"formula":"Volume (m³) = length × width × (thickness ÷ 100) × (1 + allowance ÷ 100)","explanation":"Calculate a rectangular slab’s volume and add your chosen allowance. Bag counts use the product’s mixed yield, not its dry weight.","example":"A 5m × 4m × 10cm slab needs 2.2m³ including a 10% allowance.","featured":true},{"id":"paint","name":"Paint Calculator","category":"home","description":"Plan paint quantities from area, coverage, and coats.","keywords":["walls","decorating","litres","coverage"],"fields":[{"key":"wallArea","label":"Total wall area","type":"number","default":50,"unit":"m²","min":0.001,"step":"any"},{"key":"openings","label":"Area of doors and windows","type":"number","default":5,"unit":"m²","min":0,"step":"any"},{"key":"coats","label":"Number of coats","type":"number","default":2,"unit":"coats","min":1,"max":20,"step":1},{"key":"coverage","label":"Paint coverage per litre","type":"number","default":10,"unit":"m²/L","min":0.001,"step":"any"},{"key":"wastePercent","label":"Extra paint allowance","type":"number","default":10,"unit":"%","min":0,"step":"any"}],"formula":"Litres = (wall area − openings) × coats ÷ coverage × (1 + allowance ÷ 100)","explanation":"Subtract unpainted openings from the total wall area, multiply by coats, and divide by the manufacturer’s coverage rate. Surface texture and preparation affect real coverage.","example":"45m², two coats, 10m²/L coverage, and 10% allowance need 9.9L."},{"id":"tile","name":"Tile Calculator","category":"home","description":"Estimate tiles and full boxes, with a waste allowance.","keywords":["floor","flooring","bathroom","backsplash","boxes"],"fields":[{"key":"area","label":"Area to cover","type":"number","default":20,"unit":"m²","min":0.001,"step":"any"},{"key":"tileLength","label":"Tile length","type":"number","default":30,"unit":"cm","min":0.001,"step":"any"},{"key":"tileWidth","label":"Tile width","type":"number","default":30,"unit":"cm","min":0.001,"step":"any"},{"key":"wastePercent","label":"Waste allowance","type":"number","default":10,"unit":"%","min":0,"step":"any"},{"key":"tilesPerBox","label":"Tiles in one box","type":"number","default":10,"unit":"tiles","min":1,"step":1}],"formula":"Tiles = ceiling(area × (1 + allowance ÷ 100) ÷ area of one tile)","explanation":"Both tile and box quantities round upward. This area estimate does not subtract grout joints or model the layout; intricate cuts and diagonal patterns can need more waste.","example":"20m² of 30cm × 30cm tiles with 10% extra needs 245 tiles, or 25 boxes of 10."},{"id":"gravel","name":"Gravel Calculator","category":"home","description":"Estimate gravel volume, weight, and bag quantities.","keywords":["aggregate","landscaping","stone","driveway","tonnes"],"fields":[{"key":"length","label":"Length","type":"number","default":5,"unit":"m","min":0.001,"step":"any"},{"key":"width","label":"Width","type":"number","default":4,"unit":"m","min":0.001,"step":"any"},{"key":"depth","label":"Depth","type":"number","default":5,"unit":"cm","min":0.001,"step":"any"},{"key":"density","label":"Bulk density","type":"number","default":1600,"unit":"kg/m³","min":0.001,"step":"any","hint":"Check your supplier’s density; moisture and aggregate size change the weight."},{"key":"wastePercent","label":"Extra material allowance","type":"number","default":10,"unit":"%","min":0,"step":"any"},{"key":"bagWeight","label":"Weight per bag","type":"number","default":25,"unit":"kg","min":0.001,"step":"any"}],"formula":"Volume = length × width × (depth ÷ 100); mass = volume × bulk density","explanation":"The selected allowance is added to volume before estimating mass. Density is a user-provided bulk estimate; compaction and product type can change the required quantity.","example":"5m × 4m × 5cm with 10% extra is 1.1m³, or 1.76 metric tonnes at 1,600kg/m³."},{"id":"cbm","name":"CBM Calculator","category":"shipping","description":"Find carton volume in cubic meters and cubic feet, including quantities.","keywords":["shipping","cubic meter","cubic metre","volume","carton","freight","cubagem"],"featured":true,"fields":[{"key":"length","label":"Length","type":"number","default":60,"step":0.01,"min":0,"hint":"Use the outside dimensions of the packed box."},{"key":"width","label":"Width","type":"number","default":40,"step":0.01,"min":0},{"key":"height","label":"Height","type":"number","default":30,"step":0.01,"min":0},{"key":"unit","label":"Dimensions unit","type":"select","default":"cm","options":[{"value":"cm","label":"Centimeters (cm)"},{"value":"m","label":"Meters (m)"},{"value":"in","label":"Inches (in)"},{"value":"ft","label":"Feet (ft)"}]},{"key":"quantity","label":"Number of identical boxes","type":"number","default":10,"step":1,"unit":"boxes","min":1}],"formula":"Total CBM = length × width × height × quantity, after converting dimensions to meters.","explanation":"CBM measures the space a shipment occupies. This tool totals identical rectangular cartons and also converts the result to cubic feet. Use the shipping workbench when your cartons have different sizes.","example":"Ten cartons measuring 60 × 40 × 30 cm occupy 0.72 m³."},{"id":"dimensional-weight","name":"Dimensional Weight Calculator","category":"shipping","description":"Compare actual weight with volumetric weight using your carrier’s divisor.","keywords":["shipping","volumetric weight","dim weight","chargeable weight","package","freight"],"featured":true,"fields":[{"key":"length","label":"Length","type":"number","default":60,"step":0.01,"unit":"cm","min":0},{"key":"width","label":"Width","type":"number","default":40,"step":0.01,"unit":"cm","min":0},{"key":"height","label":"Height","type":"number","default":30,"step":0.01,"unit":"cm","min":0},{"key":"actualWeight","label":"Actual weight per box","type":"number","default":8,"step":0.01,"unit":"kg","min":0},{"key":"divisor","label":"Carrier divisor","type":"number","default":5000,"step":0.01,"unit":"cm³/kg","min":0,"hint":"An editable example, not a universal carrier rule. Confirm your service’s current divisor."},{"key":"quantity","label":"Number of identical boxes","type":"number","default":1,"step":1,"unit":"boxes","min":1},{"key":"rounding","label":"Round each box’s chargeable weight","type":"select","default":"none","options":[{"value":"none","label":"No rounding (raw estimate)"},{"value":"up","label":"Up to the next whole kilogram"}]}],"formula":"Dimensional kg = length × width × height ÷ divisor. Chargeable basis per box = max(actual kg, dimensional kg).","explanation":"A light, bulky parcel can have a dimensional weight above its actual weight. This comparison uses centimeters and kilograms throughout. Set the divisor and rounding option to match your carrier and service; it does not quote a shipping price.","example":"A 60 × 40 × 30 cm box with divisor 5,000 has dimensional weight 14.4 kg. If it actually weighs 8 kg, the unrounded chargeable basis is 14.4 kg."},{"id":"age","name":"Age Calculator","category":"dates","description":"Calculate calendar age in years, months, and days on a date you choose.","keywords":["birthday","date of birth","years old","calendar"],"fields":[{"key":"birthDate","label":"Date of birth","type":"date","default":"2000-10-29"},{"key":"asOfDate","label":"Age on this date","type":"date","default":"2026-10-29"}],"formula":"Count completed calendar years, then completed months, then remaining days.","explanation":"Dates are treated as calendar dates, so daylight-saving changes do not add or remove a day. Count completed months from the original birth date, then divide them into years and 0–11 remaining months. End-of-month anniversaries are clamped to the last valid day: a February 29 birthday reaches its anniversary on February 28 in a non-leap year. Legal age rules may use a different convention.","example":"From October 29, 2000 to October 29, 2026 is exactly 26 years."},{"id":"date-difference","name":"Days Between Dates","category":"dates","description":"Count days, weeks, and weekdays between two calendar dates.","keywords":["date difference","day counter","duration","calendar","arbeitstage","days"],"fields":[{"key":"startDate","label":"Start date","type":"date","default":"2026-10-01"},{"key":"endDate","label":"End date","type":"date","default":"2026-10-29"},{"key":"counting","label":"Counting method","type":"select","default":"elapsed","options":[{"value":"elapsed","label":"Elapsed days (exclude the start date)"},{"value":"inclusive","label":"Include both start and end dates"}]}],"formula":"Elapsed days = end date − start date. Inclusive count = elapsed days + 1.","explanation":"The dates are evaluated in a time-zone-independent calendar. Weekday totals count Monday through Friday using your selected inclusion rule; they do not remove public holidays or account for local working-week conventions.","example":"October 1 to October 29 is 28 elapsed days, or 29 days including both dates."},{"id":"work-hours","name":"Work Hours Calculator","category":"dates","description":"Calculate shift hours, unpaid breaks, and estimated pay, including overnight shifts.","keywords":["time card","timesheet","working hours","arbeitszeitrechner","pay","shift","hours"],"featured":true,"fields":[{"key":"start","label":"Start time","type":"time","default":"09:00"},{"key":"end","label":"End time","type":"time","default":"17:30"},{"key":"endDay","label":"Shift ends","type":"select","default":"same","options":[{"value":"same","label":"On the same day"},{"value":"next","label":"On the following day"}]},{"key":"breakMinutes","label":"Unpaid break","type":"number","default":30,"step":1,"unit":"minutes","min":0},{"key":"rate","label":"Hourly rate","type":"number","default":25,"step":0.01,"unit":"currency / hour","min":0}],"formula":"Paid hours = (end − start − unpaid break) ÷ 60. Estimated pay = paid hours × hourly rate.","explanation":"Choose the following day for an overnight shift. This tool supports a single shift of up to 24 hours. It calculates simple gross pay without overtime premiums, taxes, statutory breaks, or payroll deductions.","example":"09:00 to 17:30, less a 30-minute unpaid break, is 8 paid hours."},{"id":"length","name":"Length Converter","category":"conversions","description":"Convert metric and imperial lengths, from millimeters to miles.","keywords":["units","distance","inch","feet","meters","cm","miles"],"featured":true,"fields":[{"key":"amount","label":"Amount","type":"number","default":1,"step":0.01,"min":0},{"key":"from","label":"From","type":"select","default":"in","options":[{"value":"mm","label":"Millimeters (mm)"},{"value":"cm","label":"Centimeters (cm)"},{"value":"m","label":"Meters (m)"},{"value":"km","label":"Kilometers (km)"},{"value":"in","label":"Inches (in)"},{"value":"ft","label":"Feet (ft)"},{"value":"yd","label":"Yards (yd)"},{"value":"mi","label":"Miles (mi)"}]},{"key":"to","label":"To","type":"select","default":"cm","options":[{"value":"mm","label":"Millimeters (mm)"},{"value":"cm","label":"Centimeters (cm)"},{"value":"m","label":"Meters (m)"},{"value":"km","label":"Kilometers (km)"},{"value":"in","label":"Inches (in)"},{"value":"ft","label":"Feet (ft)"},{"value":"yd","label":"Yards (yd)"},{"value":"mi","label":"Miles (mi)"}]}],"formula":"Converted length = input × source unit’s meter factor ÷ target unit’s meter factor.","explanation":"Uses international inch, foot, yard, and mile definitions. An inch is exactly 0.0254 meters and an international foot is exactly 0.3048 meters. Historical US survey units are not included.","example":"1 inch = exactly 2.54 centimeters."},{"id":"weight","name":"Weight Converter","category":"conversions","description":"Convert grams, kilograms, pounds, ounces, and metric tonnes.","keywords":["units","mass","kg","lb","pound","ounce","gram"],"fields":[{"key":"amount","label":"Amount","type":"number","default":1,"step":0.01,"min":0},{"key":"from","label":"From","type":"select","default":"kg","options":[{"value":"mg","label":"Milligrams (mg)"},{"value":"g","label":"Grams (g)"},{"value":"kg","label":"Kilograms (kg)"},{"value":"t","label":"Metric tonnes (t)"},{"value":"oz","label":"Ounces (oz)"},{"value":"lb","label":"Pounds (lb)"}]},{"key":"to","label":"To","type":"select","default":"lb","options":[{"value":"mg","label":"Milligrams (mg)"},{"value":"g","label":"Grams (g)"},{"value":"kg","label":"Kilograms (kg)"},{"value":"t","label":"Metric tonnes (t)"},{"value":"oz","label":"Ounces (oz)"},{"value":"lb","label":"Pounds (lb)"}]}],"formula":"Converted mass = input × source unit’s kilogram factor ÷ target unit’s kilogram factor.","explanation":"This familiar “weight” converter converts mass. Pounds and ounces are avoirdupois units, not troy units. One pound is exactly 0.45359237 kilograms; one metric tonne is 1,000 kilograms.","example":"10 pounds = 4.5359237 kilograms."},{"id":"temperature","name":"Temperature Converter","category":"conversions","description":"Convert Celsius, Fahrenheit, and Kelvin with the correct scale offsets.","keywords":["units","celsius","fahrenheit","kelvin","degrees"],"fields":[{"key":"amount","label":"Amount","type":"number","default":20,"step":0.01},{"key":"from","label":"From","type":"select","default":"C","options":[{"value":"C","label":"Celsius (°C)"},{"value":"F","label":"Fahrenheit (°F)"},{"value":"K","label":"Kelvin (K)"}]},{"key":"to","label":"To","type":"select","default":"F","options":[{"value":"C","label":"Celsius (°C)"},{"value":"F","label":"Fahrenheit (°F)"},{"value":"K","label":"Kelvin (K)"}]}],"formula":"°F = °C × 9/5 + 32. K = °C + 273.15.","explanation":"Unlike lengths, temperature scales need an offset as well as a scale factor. This converter handles absolute temperatures and rejects values below absolute zero. It is not for converting temperature differences.","example":"0 °C = 32 °F = 273.15 K."},{"id":"speed","name":"Speed Converter","category":"conversions","description":"Convert km/h, mph, meters per second, feet per second, and knots.","keywords":["units","velocity","mph","kmh","knots"],"fields":[{"key":"amount","label":"Amount","type":"number","default":60,"step":0.01,"min":0},{"key":"from","label":"From","type":"select","default":"mph","options":[{"value":"m/s","label":"Meters per second (m/s)"},{"value":"km/h","label":"Kilometers per hour (km/h)"},{"value":"mph","label":"Miles per hour (mph)"},{"value":"ft/s","label":"Feet per second (ft/s)"},{"value":"kn","label":"Knots (kn)"}]},{"key":"to","label":"To","type":"select","default":"km/h","options":[{"value":"m/s","label":"Meters per second (m/s)"},{"value":"km/h","label":"Kilometers per hour (km/h)"},{"value":"mph","label":"Miles per hour (mph)"},{"value":"ft/s","label":"Feet per second (ft/s)"},{"value":"kn","label":"Knots (kn)"}]}],"formula":"Converted speed = input × source unit’s m/s factor ÷ target unit’s m/s factor.","explanation":"Uses international miles and feet. A knot is one nautical mile per hour, with one nautical mile defined as 1,852 meters. All inputs represent nonnegative speed, not signed velocity.","example":"60 mph = 96.56064 km/h."},{"id":"data-size","name":"Data Size Converter","category":"conversions","description":"Convert bits, bytes, decimal storage units, and binary memory units.","keywords":["storage","file size","MB","GB","MiB","GiB","bytes","bits"],"fields":[{"key":"amount","label":"Amount","type":"number","default":1,"step":0.01,"min":0},{"key":"from","label":"From","type":"select","default":"GB","options":[{"value":"b","label":"Bits (b)"},{"value":"B","label":"Bytes (B)"},{"value":"kB","label":"Kilobytes (kB, decimal)"},{"value":"MB","label":"Megabytes (MB, decimal)"},{"value":"GB","label":"Gigabytes (GB, decimal)"},{"value":"TB","label":"Terabytes (TB, decimal)"},{"value":"KiB","label":"Kibibytes (KiB, binary)"},{"value":"MiB","label":"Mebibytes (MiB, binary)"},{"value":"GiB","label":"Gibibytes (GiB, binary)"},{"value":"TiB","label":"Tebibytes (TiB, binary)"}]},{"key":"to","label":"To","type":"select","default":"MiB","options":[{"value":"b","label":"Bits (b)"},{"value":"B","label":"Bytes (B)"},{"value":"kB","label":"Kilobytes (kB, decimal)"},{"value":"MB","label":"Megabytes (MB, decimal)"},{"value":"GB","label":"Gigabytes (GB, decimal)"},{"value":"TB","label":"Terabytes (TB, decimal)"},{"value":"KiB","label":"Kibibytes (KiB, binary)"},{"value":"MiB","label":"Mebibytes (MiB, binary)"},{"value":"GiB","label":"Gibibytes (GiB, binary)"},{"value":"TiB","label":"Tebibytes (TiB, binary)"}]}],"formula":"Converted size = input × bytes per source unit ÷ bytes per target unit.","explanation":"One byte is 8 bits. Decimal prefixes use powers of 1,000 (1 GB = 1,000,000,000 bytes), while binary prefixes use powers of 1,024 (1 GiB = 1,073,741,824 bytes). The uppercase B means bytes; lowercase b means bits.","example":"1 GB = 953.67431640625 MiB, while 1 GiB = 1,024 MiB."},{"id":"loan","name":"Loan Calculator","category":"finance","description":"Estimate fixed monthly principal and interest payments and total borrowing cost.","keywords":["amortization","monthly payment","interest","mortgage","repayment"],"featured":true,"fields":[{"key":"principal","label":"Loan amount","type":"number","default":100000,"step":0.01,"unit":"currency units","min":0},{"key":"rate","label":"Annual interest rate","type":"number","default":6,"step":0.01,"unit":"%","min":0},{"key":"years","label":"Loan term","type":"number","default":30,"step":0.5,"unit":"years","min":0,"max":100,"hint":"The term must equal a whole number of months."}],"formula":"Monthly payment = P × r ÷ [1 − (1 + r)^(−n)], where r is annual rate ÷ 12 and n is the number of monthly payments.","explanation":"Models a fully amortizing, fixed-rate loan with equal monthly payments made at the end of each month. The entered rate is the nominal annual interest rate, not an APR including fees. Taxes, insurance, fees, variable rates, and extra repayments are excluded.","example":"100,000 borrowed at 6% for 30 years gives a monthly principal-and-interest payment of about 599.55."},{"id":"compound-interest","name":"Compound Interest Calculator","category":"finance","description":"Explore growth with monthly contributions and a clearly defined compounding schedule.","keywords":["savings","investment","growth","future value","interest"],"fields":[{"key":"principal","label":"Starting balance","type":"number","default":10000,"step":0.01,"unit":"currency units","min":0},{"key":"contribution","label":"Monthly contribution","type":"number","default":200,"step":0.01,"unit":"currency units","min":0},{"key":"rate","label":"Annual interest rate","type":"number","default":5,"step":0.01,"unit":"%","min":0},{"key":"years","label":"Time to grow","type":"number","default":10,"step":0.5,"unit":"years","min":0,"max":100},{"key":"timing","label":"Add monthly contributions","type":"select","default":"end","options":[{"value":"end","label":"At the end of each month"},{"value":"start","label":"At the start of each month"}]}],"formula":"FV = P(1 + r)^n + C × [(1 + r)^n − 1] ÷ r. Start-of-month contributions multiply the contribution term by (1 + r).","explanation":"Uses the entered nominal annual rate divided by 12 and monthly compounding. Contributions are equal and nonnegative. The model assumes a constant rate, with no fees, taxes, inflation, or market volatility; it illustrates a scenario rather than predicting a return.","example":"2,000 growing at 5% nominal annual interest, compounded monthly for 2 years with no additions, becomes about 2,209.88."},{"id":"savings-goal","name":"Savings Goal Calculator","category":"finance","description":"Find the monthly amount needed to reach a goal by your chosen time horizon.","keywords":["budget","saving","target","monthly deposit","goal"],"fields":[{"key":"goal","label":"Target balance","type":"number","default":10000,"step":0.01,"unit":"currency units","min":0},{"key":"current","label":"Current savings","type":"number","default":1000,"step":0.01,"unit":"currency units","min":0},{"key":"rate","label":"Annual interest rate","type":"number","default":3,"step":0.01,"unit":"%","min":0},{"key":"years","label":"Time to reach your goal","type":"number","default":3,"step":0.5,"unit":"years","min":0,"max":100}],"formula":"Monthly saving = max(0, target − current × (1 + r)^n) ÷ [((1 + r)^n − 1) ÷ r].","explanation":"Assumes monthly compounding and deposits made at the end of each month. With no interest, the gap is simply divided by the number of months. Results exclude fees, tax, inflation, and changing rates.","example":"With 1,000 saved, a 10,000 target in 3 years and zero interest requires 250 per month."},{"id":"tip","name":"Tip & Bill Split Calculator","category":"finance","description":"Calculate a tip, split the total, and see a practical cent-based payment split.","keywords":["gratuity","restaurant","split bill","dinner","tip"],"fields":[{"key":"bill","label":"Bill before tip","type":"number","default":85,"step":0.01,"unit":"currency units","min":0},{"key":"tipRate","label":"Tip rate","type":"number","default":18,"step":0.01,"unit":"%","min":0},{"key":"people","label":"Number of people","type":"number","default":2,"step":1,"unit":"people","min":1}],"formula":"Tip = bill × tip rate ÷ 100. Share = (bill + rounded tip) ÷ number of people.","explanation":"The entered bill is the amount on which you want to tip. Tip and bill are rounded to two decimal places. When the total cannot split evenly to the cent, the payment-split note assigns the remaining cents so the payments add up exactly. Currencies without two decimal places may need a different rounding convention.","example":"An 85.00 bill with an 18% tip totals 100.30, or 50.15 each for two people."},{"id":"simple-interest","name":"Simple Interest Calculator","category":"finance","description":"Calculate interest applied only to the original principal.","keywords":["interest","principal","fixed return","finance"],"fields":[{"key":"principal","label":"Principal","type":"number","default":1000,"step":0.01,"unit":"currency units","min":0},{"key":"rate","label":"Annual interest rate","type":"number","default":5,"step":0.01,"unit":"%","min":0},{"key":"years","label":"Time","type":"number","default":3,"step":0.01,"unit":"years","min":0}],"formula":"Interest = principal × annual rate ÷ 100 × years. Final amount = principal + interest.","explanation":"Simple interest does not earn interest on accumulated interest. Time is entered in years; for example, six months is 0.5 years. This is a constant-rate model and does not reproduce lenders’ daily accrual conventions, fees, or repayment schedules.","example":"1,000 at 5% simple annual interest for 3 years earns 150, giving 1,150 in total."},{"id":"cpm","name":"CPM Calculator","category":"creator","description":"Work out advertising cost per thousand impressions from spend and reach.","keywords":["ads","advertising","marketing","cost per mille","TKP","impressions"],"fields":[{"key":"cost","label":"Campaign spend","type":"number","default":250,"step":0.01,"unit":"currency units","min":0},{"key":"impressions","label":"Impressions","type":"number","default":100000,"step":1,"unit":"impressions","min":1}],"formula":"CPM = campaign spend ÷ impressions × 1,000.","explanation":"CPM puts impression-based advertising costs on a common basis. Impressions count ad displays, not unique people, clicks, or conversions. It does not establish campaign profitability on its own.","example":"Spending 250 for 100,000 impressions gives a CPM of 2.50."},{"id":"cpc","name":"CPC Calculator","category":"creator","description":"Find average cost per click and click-through rate for a campaign.","keywords":["ads","advertising","marketing","cost per click","CTR"],"fields":[{"key":"cost","label":"Campaign spend","type":"number","default":250,"step":0.01,"unit":"currency units","min":0},{"key":"clicks","label":"Clicks","type":"number","default":500,"step":1,"unit":"clicks","min":1},{"key":"impressions","label":"Impressions","type":"number","default":25000,"step":1,"unit":"impressions","min":1}],"formula":"CPC = spend ÷ clicks. CTR = clicks ÷ impressions × 100.","explanation":"Uses the totals you enter to calculate average cost per click and click-through rate. Use a consistent reporting period and compatible definitions. Some systems count multiple clicks per impression, so a CTR over 100% is mathematically possible but merits a data check.","example":"250 spent for 500 clicks yields CPC 0.50. Those clicks from 25,000 impressions give a 2% CTR."},{"id":"roi","name":"ROI Calculator","category":"creator","description":"Compare total cost and return to calculate profit and return on investment.","keywords":["return on investment","profit","campaign","business","marketing"],"fields":[{"key":"cost","label":"Total cost","type":"number","default":1000,"step":0.01,"unit":"currency units","min":0},{"key":"revenue","label":"Total return or revenue","type":"number","default":1500,"step":0.01,"unit":"currency units","min":0}],"formula":"ROI = (return − cost) ÷ cost × 100.","explanation":"For a meaningful comparison, include all relevant costs and use the same time period. This simple ROI is not annualized and ignores the timing of cash flows. For an advertising campaign, revenue divided by ad spend is ROAS, a different measure.","example":"A 1,500 return on 1,000 of total costs gives 500 profit and 50% ROI."},{"id":"aspect-ratio","name":"Aspect Ratio Calculator","category":"creator","description":"Simplify image dimensions and resize a design without changing its proportions.","keywords":["image","video","resize","resolution","ratio","seitenverhältnis"],"fields":[{"key":"width","label":"Original width","type":"number","default":1920,"step":1,"unit":"px","min":1},{"key":"height","label":"Original height","type":"number","default":1080,"step":1,"unit":"px","min":1},{"key":"newWidth","label":"New width","type":"number","default":1280,"step":1,"unit":"px","min":1}],"formula":"Simplified ratio = width/GCD : height/GCD. New height = new width × original height ÷ original width.","explanation":"Enter whole-pixel dimensions. The simplified ratio uses the greatest common divisor. The exact scaled height may be fractional; the suggested pixel height is rounded to the nearest pixel and can introduce a very small proportion difference.","example":"1,920 × 1,080 simplifies to 16:9. At 1,280 pixels wide, its matching height is 720 pixels."},{"id":"reading-time","name":"Reading Time Calculator","category":"creator","description":"Estimate reading or speaking time from word count and your chosen pace.","keywords":["word count","blog","reading","speaking","speech","content"],"fields":[{"key":"words","label":"Word count","type":"number","default":1000,"step":1,"unit":"words","min":0},{"key":"pace","label":"Reading or speaking pace","type":"number","default":200,"step":0.01,"unit":"words / minute","min":0,"hint":"Choose a pace that fits your audience and content."}],"formula":"Minutes = word count ÷ words per minute.","explanation":"This estimate assumes a constant pace. Complexity, language, pauses, images, and accessibility needs affect actual reading and speaking time. Set a lower pace when estimating a spoken presentation.","example":"1,000 words at 200 words per minute takes about 5 minutes."},{"id":"time-zone","name":"Time Zone Converter","category":"dates","featured":true,"description":"Convert a dated local time between IANA time zones, with explicit daylight-saving choices.","keywords":["timezone converter","time zone converter","meeting planner","DST","時差","Zeitzonen"],"fields":[{"key":"date","label":"Date","type":"date","default":"2026-10-29"},{"key":"time","label":"Local time","type":"time","default":"09:00"},{"key":"from","label":"From time zone","type":"text","default":"America/New_York","hint":"Use an IANA name, such as America/Jamaica, Europe/London, or Asia/Tokyo."},{"key":"to","label":"To time zone","type":"text","default":"Europe/London"},{"key":"disambiguation","label":"When the clock repeats an hour","type":"select","default":"reject","options":[{"value":"reject","label":"Ask me to choose"},{"value":"earlier","label":"Use the earlier occurrence"},{"value":"later","label":"Use the later occurrence"}]}],"formula":"Dated source wall time → a unique instant → destination wall time.","explanation":"Time zones depend on the date. Repeated clock times require an explicit earlier or later choice. A time skipped when clocks move forward is rejected. Zone rules come from the runtime’s IANA time-zone data; future government changes may require a runtime update.","example":"October 29, 2026 at 09:00 in New York is 13:00 in London."},{"id":"currency","name":"Currency Converter","category":"conversions","featured":true,"description":"Convert with your explicit exchange rate and inspect the rounding. No hidden or invented market rate.","keywords":["currency converter","exchange rate","conversor de divisas","تحويل العملات","währungsrechner"],"fields":[{"key":"amount","label":"Amount","type":"number","default":100,"min":0,"max":1000000000000,"step":"any"},{"key":"from","label":"Source currency code","type":"text","default":"USD"},{"key":"to","label":"Destination currency code","type":"text","default":"EUR"},{"key":"rate","label":"Destination units per 1 source unit","type":"number","default":"0.90","min":1e-12,"max":1000000000,"step":"any","hint":"Editable example only. Enter the rate offered by your bank or provider, including its spread if applicable."},{"key":"decimals","label":"Output decimal places","type":"number","default":2,"min":0,"max":6,"step":1}],"formula":"Destination amount = source amount × explicit rate; round once, half up, at the selected decimal places.","explanation":"Decimal arithmetic avoids binary rounding surprises. The rate is a user input, not a live quote. Fees, spreads, and settlement dates may change the amount you receive. Currency codes do not select a jurisdiction or a tax rule.","example":"100 USD at an explicitly entered 0.90 EUR per USD gives 90.00 EUR, before fees."},{"id":"profit-projection","name":"Profit Projection Calculator","category":"business","featured":true,"description":"Model monthly revenue, variable costs, fixed costs, and cumulative operating surplus.","keywords":["profit forecast","cash flow","business planning","revenue projection","startup break even"],"fields":[{"key":"revenue","label":"First month revenue","type":"number","default":10000,"min":0,"max":1000000000000,"step":"any"},{"key":"variablePercent","label":"Variable costs as a percentage of revenue","type":"number","default":30,"min":0,"max":100,"step":"any"},{"key":"fixedCosts","label":"Fixed costs per month","type":"number","default":4000,"min":0,"max":1000000000000,"step":"any"},{"key":"growth","label":"Monthly revenue growth percentage","type":"number","default":0,"min":-100,"max":100,"step":"any"},{"key":"months","label":"Number of months","type":"number","default":12,"min":1,"max":120,"step":1},{"key":"initialInvestment","label":"Initial cash outlay","type":"number","default":5000,"min":0,"max":1000000000000,"step":"any"}],"formula":"Monthly operating profit = revenue − variable costs − fixed costs. Cumulative surplus starts at −initial cash outlay.","explanation":"Revenue growth compounds each month. Revenue and variable costs round half up to cents each month. Fixed costs stay constant. This scenario excludes tax, financing, working-capital timing, depreciation, and inflation. It is an editable assumption model, not a prediction.","example":"Revenue of 10,000, variable costs of 30%, and fixed costs of 4,000 give monthly operating profit of 3,000. Over 12 flat months, profit totals 36,000; less 5,000 initial outlay, cumulative surplus is 31,000."},{"id":"fuel-trip","name":"Road Trip Fuel & Cost Calculator","category":"conversions","featured":false,"description":"Plan fuel, detours and trip cost with explicit US or Imperial gallon conventions.","keywords":["fuel cost calculator","road trip cost","gas needed","petrol cost calculator"],"fields":[{"key":"distance","label":"One-way or total distance entered","type":"number","default":300,"min":0,"max":1000000000,"step":"any"},{"key":"distanceUnit","label":"Distance unit","type":"select","default":"km","options":[{"value":"km","label":"Kilometres"},{"value":"mi","label":"Miles"}]},{"key":"detour","label":"Additional distance allowance (%)","type":"number","default":10,"min":0,"max":200,"step":"any"},{"key":"economy","label":"Fuel consumption or economy","type":"number","default":7,"min":0.01,"max":1000,"step":"any"},{"key":"economyUnit","label":"Consumption convention","type":"select","default":"l100","options":[{"value":"l100","label":"Litres / 100 km"},{"value":"mpg-us","label":"Miles / US gallon"},{"value":"mpg-uk","label":"Miles / Imperial gallon"}]},{"key":"price","label":"Price per litre","type":"number","default":1.5,"min":0,"max":1000000000,"step":"any"},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Adjusted distance × fuel used per distance × price per litre. 1 mile = 1.609344 km; US gallon = 3.785411784 L; Imperial gallon = 4.54609 L.","explanation":"Distance is entered by you, not fetched from a map. Enter the complete return distance if needed. The allowance adds distance, not a guarantee about traffic or consumption. Parking, tolls, lodging and vehicle wear are excluded. The final fuel cost rounds once to the currency’s minor unit.","example":"300 km plus 10% at 7 L/100 km uses 23.1 L. At 1.50 per litre, fuel costs 34.65."},{"id":"ev-trip-energy","name":"EV Trip Energy & Charging Scenario","category":"conversions","featured":false,"description":"Estimate trip energy, a reserve, grid energy, and a charging-time lower bound.","keywords":["EV trip planner","EV charging cost calculator","charging time"],"fields":[{"key":"distance","label":"Trip distance (km)","type":"number","default":500,"min":0,"max":1000000000,"step":"any"},{"key":"consumption","label":"Battery consumption (kWh / 100 km)","type":"number","default":18,"min":0.1,"max":200,"step":"any"},{"key":"battery","label":"Usable battery capacity (kWh)","type":"number","default":75,"min":0.1,"max":2000,"step":"any"},{"key":"start","label":"Starting charge (%)","type":"number","default":90,"min":0,"max":100,"step":"any"},{"key":"reserve","label":"Arrival reserve (%)","type":"number","default":15,"min":0,"max":99,"step":"any"},{"key":"chargeTo","label":"Assumed charge after each stop (%)","type":"number","default":80,"min":1,"max":100,"step":"any"},{"key":"power","label":"Average power delivered to battery (kW)","type":"number","default":75,"min":0.1,"max":2000,"step":"any"},{"key":"efficiency","label":"Grid-to-battery efficiency (%)","type":"number","default":90,"min":1,"max":100,"step":"any"},{"key":"price","label":"Grid electricity price per kWh","type":"number","default":0.4,"min":0,"max":1000000000,"step":"any"},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Battery energy = distance × consumption / 100. Additional energy = max(0, trip energy + arrival reserve − starting energy). Grid energy = additional energy / efficiency.","explanation":"This is an energy scenario, not a routed journey. The session count is an energy-only lower bound assuming charging from reserve to the selected limit at each stop. Station locations, availability, connector compatibility, terrain, weather, queues, taper and detours are not supplied. Time uses average power delivered to the battery; peak charger power is not a suitable substitute.","example":"500 km at 18 kWh/100 km needs 90 kWh. A 75 kWh battery starting at 90%, with a 15% reserve, needs 33.75 kWh added to the battery."},{"id":"solar-sizing","name":"Solar Panels & Battery Scenario","category":"home","featured":false,"description":"Convert a daily energy goal into illustrative panel and storage quantities.","keywords":["solar panel calculator","solar kwh calculator","solar battery sizing"],"fields":[{"key":"dailyEnergy","label":"Daily energy target (kWh)","type":"number","default":20,"min":0,"max":1000000,"step":"any"},{"key":"sunHours","label":"Peak sun hours per day","type":"number","default":4,"min":0.1,"max":24,"step":"any"},{"key":"loss","label":"Overall production loss (%)","type":"number","default":20,"min":0,"max":99,"step":"any"},{"key":"panelWatts","label":"Panel nameplate power (W)","type":"number","default":400,"min":1,"max":2000,"step":"any"},{"key":"autonomy","label":"Battery autonomy (days)","type":"number","default":1,"min":0,"max":30,"step":"any"},{"key":"usable","label":"Usable share of nominal battery (%)","type":"number","default":80,"min":1,"max":100,"step":"any"},{"key":"inverter","label":"Storage delivery efficiency (%)","type":"number","default":90,"min":1,"max":100,"step":"any"}],"formula":"DC kW = daily kWh / (peak sun hours × (1 − loss)). Panels = ceiling(DC kW × 1000 / panel W). Nominal storage = daily kWh × autonomy / (usable share × delivery efficiency).","explanation":"Peak sun hours and losses are your scenario inputs, not a location forecast. The loss input includes production-side losses; storage delivery efficiency applies separately to battery sizing. This is daily energy arithmetic: it does not size instantaneous power, structural loading, wiring, inverter surge, permits, seasonal reliability or an installable system.","example":"20 kWh/day, 4 peak sun hours and 20% production loss require 6.25 kW DC, rounded up to 16 panels rated at 400 W."},{"id":"server-capacity","name":"Measured Server Capacity Planner","category":"business","featured":false,"description":"Turn measured safe capacity into server counts, headroom, reserve and monthly cost.","keywords":["game server capacity","website capacity planning","server cost calculator"],"fields":[{"key":"peak","label":"Peak simultaneous load (same unit as capacity)","type":"number","default":120,"min":0,"max":1000000000,"step":"any"},{"key":"capacity","label":"Measured safe load per server","type":"number","default":40,"min":0.01,"max":1000000000,"step":"any"},{"key":"headroom","label":"Extra load headroom (%)","type":"number","default":25,"min":0,"max":300,"step":"any"},{"key":"spares","label":"Additional reserve servers","type":"number","default":1,"min":0,"max":1000,"step":1},{"key":"monthlyCost","label":"Monthly cost per server","type":"number","default":30,"min":0,"max":1000000000,"step":"any"},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Working servers = ceiling(peak load × (1 + headroom) / measured safe capacity). Provisioned servers = working servers + reserves.","explanation":"Use a load test for the actual game, mods, tick rate, website or workload. Player counts and requests per second are different units and cannot be mixed. The arithmetic does not infer CPU, memory, latency, autoscaling, failure domains, storage, egress, support or a provider service guarantee. Reserve capacity must actually be deployable to help during a failure.","example":"120 simultaneous players, 25% headroom and 40 tested players per server require 4 working servers; one reserve makes 5. At 30/month each, that is 150/month."},{"id":"collectible-sale","name":"Collectible Sale Net Proceeds & ROI","category":"business","featured":false,"description":"See what a card or collectible sale leaves after purchase, grading, shipping and fees.","keywords":["pokemon card profit calculator","TCG ROI","collectible sale fees","card grading cost"],"fields":[{"key":"sale","label":"Item sale price","type":"number","default":150,"min":0,"max":1000000000,"step":"any"},{"key":"shippingIncome","label":"Shipping collected from buyer","type":"number","default":5,"min":0,"max":1000000000,"step":"any"},{"key":"purchase","label":"Purchase cost","type":"number","default":80,"min":0,"max":1000000000,"step":"any"},{"key":"grading","label":"Grading and submission cost","type":"number","default":20,"min":0,"max":1000000000,"step":"any"},{"key":"shippingCost","label":"Shipping and packaging paid","type":"number","default":6,"min":0,"max":1000000000,"step":"any"},{"key":"other","label":"Other transaction costs","type":"number","default":0,"min":0,"max":1000000000,"step":"any"},{"key":"feePercent","label":"Variable marketplace fee (%)","type":"number","default":13,"min":0,"max":99,"step":"any"},{"key":"feeTaxBase","label":"Additional fee base, such as buyer tax","type":"number","default":0,"min":0,"max":1000000000,"step":"any"},{"key":"flatFee","label":"Flat transaction fee","type":"number","default":0.3,"min":0,"max":1000000000,"step":"any"},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Fee = round((sale + shipping collected + additional fee base) × fee rate) + flat fee. Profit = sale + shipping collected − all transaction costs. ROI = profit / all transaction costs.","explanation":"Prices and fees are editable assumptions, not a live valuation, authenticity check or sale guarantee. Some marketplaces charge fees on buyer taxes: enter any extra fee base explicitly without counting it as seller income. Costs round to the selected currency’s minor unit; the variable fee rounds once per transaction. ROI uses all modeled transaction costs and is undefined when those costs are zero. Tax, returns, insurance, financing and unsold inventory may change the outcome.","example":"Sale 150 plus shipping collected 5, purchase 80, grading 20, shipping paid 6, 13% fee and 0.30 flat fee leave 28.55 before tax."},{"id":"debt-payoff","name":"Fixed Payment Debt Payoff Scenario","category":"finance","featured":false,"description":"Compare a monthly payment with modeled interest and inspect the repayment schedule.","keywords":["debt payoff calculator","credit card payoff calculator","debt repayment"],"fields":[{"key":"balance","label":"Starting balance","type":"number","default":5000,"min":0,"max":1000000000,"step":"any"},{"key":"apr","label":"Nominal annual interest rate (%)","type":"number","default":24,"min":0,"max":100,"step":"any"},{"key":"payment","label":"Monthly payment","type":"number","default":200,"min":0,"max":1000000000,"step":"any"},{"key":"extra","label":"Additional monthly payment","type":"number","default":50,"min":0,"max":1000000000,"step":"any"},{"key":"months","label":"Maximum months to model","type":"number","default":120,"min":1,"max":600,"step":1},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Monthly interest = round(opening balance × nominal APR / 1200). Payment occurs after interest; the final payment is capped at the amount owed.","explanation":"One fixed-rate balance, no new spending or fees, and one payment at each month end. Interest rounds to the currency’s minor unit each month. Real cards may use daily balances, variable APRs, minimum-payment rules and promotional periods. This does not predict a credit score, erase accurate credit history or settle a debt.","example":"At 0% interest, a balance of 1,000 and a payment of 300 takes four payments: 300, 300, 300 and 100."},{"id":"savings-timeline","name":"Savings Goal & Monthly Deposit Planner","category":"finance","featured":false,"description":"Model progress toward a goal with explicit deposits, interest and a bounded horizon.","keywords":["savings goal calculator","sinking fund calculator","emergency fund planner"],"fields":[{"key":"target","label":"Savings goal","type":"number","default":5000,"min":0,"max":1000000000,"step":"any"},{"key":"current","label":"Already saved","type":"number","default":500,"min":0,"max":1000000000,"step":"any"},{"key":"deposit","label":"End-of-month deposit","type":"number","default":250,"min":0,"max":1000000000,"step":"any"},{"key":"apr","label":"Nominal annual interest rate (%)","type":"number","default":0,"min":0,"max":100,"step":"any"},{"key":"months","label":"Maximum months to model","type":"number","default":120,"min":1,"max":600,"step":1},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Monthly interest = round(opening savings × nominal APR / 1200); then add the monthly deposit. Stop at the first modeled month that meets the target.","explanation":"An assumption model with constant deposits and rate. A nominal annual rate divided by 12 is not an advertised APY or AER. Interest rounds each month. Tax, inflation, fees, withdrawals and changing returns are excluded. Zero interest is a useful starting scenario; no return is promised.","example":"Starting with 500 toward a 5,000 goal, deposits of 250/month and no interest reach the goal in 18 months."},{"id":"substrate-mix","name":"Bonsai & Terrarium Substrate Mix Quantities","category":"home","featured":false,"description":"Scale your chosen three-component mix and see the volume required for each material.","keywords":["bonsai soil calculator","terrarium substrate calculator","potting mix calculator"],"fields":[{"key":"volume","label":"Measured fill volume (litres)","type":"number","default":12,"min":0,"max":1000000000,"step":"any"},{"key":"extra","label":"Extra material allowance (%)","type":"number","default":10,"min":0,"max":100,"step":"any"},{"key":"a","label":"Material A share (%)","type":"number","default":50,"min":0,"max":100,"step":"any"},{"key":"b","label":"Material B share (%)","type":"number","default":25,"min":0,"max":100,"step":"any"},{"key":"c","label":"Material C share (%)","type":"number","default":25,"min":0,"max":100,"step":"any"}],"formula":"Total mix = fill volume × (1 + allowance). Each component volume = total mix × its share; shares must total 100%.","explanation":"You choose the materials and proportions. The example is not a species-specific bonsai, terrarium or animal-care recommendation. Rock, roots, drainage layers and container shape affect measured fill volume. This scales volumes only; it does not infer irrigation, fertilizer, pesticide or stocking instructions.","example":"12 litres with a 10% allowance gives 13.2 L total. A 50/25/25 mix needs 6.6 L, 3.3 L and 3.3 L."},{"id":"mining-operating-scenario","name":"Mining Revenue & Electricity Scenario","category":"business","featured":false,"description":"Test an entered daily-revenue assumption against power, fees, uptime and equipment cost.","keywords":["crypto mining calculator","ASIC operating cost","GPU mining electricity","mining ROI"],"fields":[{"key":"dailyGross","label":"Gross revenue per full-uptime day","type":"number","default":8,"min":0,"max":1000000000,"step":"any"},{"key":"watts","label":"Running wall power (W)","type":"number","default":3000,"min":0,"max":1000000000,"step":"any"},{"key":"electricityPrice","label":"Electricity price per kWh","type":"number","default":0.1,"min":0,"max":1000000000,"step":"any"},{"key":"uptime","label":"Running time (%)","type":"number","default":95,"min":0,"max":100,"step":"any"},{"key":"fee","label":"Revenue fee (%)","type":"number","default":2,"min":0,"max":100,"step":"any"},{"key":"otherDaily","label":"Other costs per calendar day","type":"number","default":0.5,"min":0,"max":1000000000,"step":"any"},{"key":"equipment","label":"Equipment cash outlay","type":"number","default":3000,"min":0,"max":1000000000,"step":"any"},{"key":"days","label":"Scenario days","type":"number","default":365,"min":1,"max":3650,"step":1},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one currency throughout. No exchange rate is assumed."}],"formula":"Daily net revenue = gross full-uptime revenue × uptime × (1 − fee). Energy = running kW × 24 × uptime. Operating surplus = net revenue − energy cost − other daily costs.","explanation":"Daily gross revenue is your input, not a network-derived quote. Uptime scales revenue and running electricity equally; standby power is excluded. Revenue and energy cost round once per calendar day before summing. Cooling, power tariffs, pool payout rules, difficulty, token prices, tax, repairs and resale can change results. A flat scenario is not a forecast or an investment recommendation.","example":"At full uptime, 3,000 W uses 72 kWh/day. At 0.10/kWh the power bill is 7.20/day, before cooling and other costs."},{"id":"scale-comparison","name":"Curiosity Scale & Repeat-Unit Calculator","category":"math","featured":false,"description":"Turn a stated length and repeat-unit assumption into a transparent scale comparison.","keywords":["human chain earth calculator","scale comparison","how many would fit"],"fields":[{"key":"target","label":"Target length (metres)","type":"number","default":40000000,"min":0,"max":1000000000000,"step":"any"},{"key":"span","label":"Length contributed by each item (metres)","type":"number","default":0.5,"min":0.000001,"max":1000000000,"step":"any"},{"key":"gap","label":"Gap allowed per repeat unit (metres)","type":"number","default":0,"min":0,"max":1000000000,"step":"any"}],"formula":"Repeat-unit length = item span + gap. Required repeat units = ceiling(target length / repeat-unit length).","explanation":"This is a one-dimensional thought experiment. The default 40,000 km is a rounded illustrative target, not a precise equatorial or meridional circumference. A human’s width is an explicit assumption, not a universal biological average. One gap is allocated per repeated unit; closed loops, terrain, physical feasibility and safety are not modeled. Source a scientific or anatomical claim before using it in marketing.","example":"An illustrative 40,000 km target and 0.50 m per repeat unit require 80,000,000 units."},{"id":"contribution-margin","name":"Contribution Margin & Discount Calculator","category":"business","description":"Compare contribution per unit before and after a discount, and the extra sales needed to retain it.","keywords":["contribution margin calculator","discount margin calculator","discount impact","sales volume","variable costs"],"fields":[{"key":"price","label":"Original selling price per unit","type":"number","default":100,"min":0,"max":1000000000,"step":"any"},{"key":"variableCost","label":"Variable cost per unit","type":"number","default":60,"min":0,"max":1000000000,"step":"any"},{"key":"discount","label":"Discount (%)","type":"number","default":10,"min":0,"max":100,"step":"any"},{"key":"units","label":"Original sales volume (whole units)","type":"number","default":100,"min":1,"max":1000000000,"step":1},{"key":"currency","label":"Currency code","type":"text","default":"USD","hint":"Use one uppercase ISO currency code throughout, such as USD, JPY or KWD."}],"formula":"Contribution per unit = selling price − variable cost. Contribution margin = contribution ÷ selling price × 100. Required discounted units = ceiling(original units × original contribution ÷ discounted contribution).","explanation":"Contribution pays toward fixed costs and then operating profit; it is not net profit. Include costs that change with each unit sold. The model holds variable cost per unit and total fixed costs constant. It does not predict demand, capacity, taxes, tiered fees or a change in product mix. Prices and costs round half up to the currency minor unit first, and the discounted unit price rounds once before calculating contribution. Whole-unit volume rounds up. No finite volume can preserve positive contribution if the discounted unit contribution is zero or negative.","example":"At a price of USD 100 and variable cost of USD 60, contribution is USD 40 (40%). A 10% discount leaves USD 30 (33.333%). Matching the contribution from 100 original sales requires 134 discounted sales: 34 more units, a 34% volume increase."}],"requestSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"protocol":{"type":"string","const":"uctool/1"},"toolId":{"type":"string","minLength":1,"maxLength":80},"inputs":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"}]},"maxProperties":32}},"required":["protocol","toolId","inputs"],"additionalProperties":false},"privacy":"Public compute only. Requests are not saved to user history. Do not send secrets or personal records."}