{"version":1,"name":"Toolmoz","url":"https://toolmoz.com/","description":"Free tools, converters and calculators. Interactive processing runs on the visitor’s device; currency rates use a shared public feed.","categories":[{"id":"cooking","name":"Food & cooking","url":"https://toolmoz.com/categories/cooking/"},{"id":"conversion","name":"Conversions","url":"https://toolmoz.com/categories/conversion/"},{"id":"money","name":"Money & shopping","url":"https://toolmoz.com/categories/money/"},{"id":"health","name":"Health & wellbeing","url":"https://toolmoz.com/categories/health/"},{"id":"outdoors","name":"Outdoors & maps","url":"https://toolmoz.com/categories/outdoors/"},{"id":"weather","name":"Weather & air","url":"https://toolmoz.com/categories/weather/"},{"id":"transport","name":"Travel & transport","url":"https://toolmoz.com/categories/transport/"},{"id":"planning","name":"Planning & productivity","url":"https://toolmoz.com/categories/planning/"},{"id":"sport","name":"Sport & fitness","url":"https://toolmoz.com/categories/sport/"},{"id":"garden","name":"Garden & outdoors","url":"https://toolmoz.com/categories/garden/"},{"id":"crafts","name":"Sewing & crafts","url":"https://toolmoz.com/categories/crafts/"},{"id":"home","name":"Home & DIY","url":"https://toolmoz.com/categories/home/"},{"id":"dates","name":"Dates & time","url":"https://toolmoz.com/categories/dates/"},{"id":"education","name":"Education & study","url":"https://toolmoz.com/categories/education/"},{"id":"music","name":"Music & audio","url":"https://toolmoz.com/categories/music/"},{"id":"engineering","name":"Engineering & mechanics","url":"https://toolmoz.com/categories/engineering/"},{"id":"science","name":"Science & engineering","url":"https://toolmoz.com/categories/science/"},{"id":"statistics","name":"Statistics & probability","url":"https://toolmoz.com/categories/statistics/"},{"id":"math","name":"Maths & numbers","url":"https://toolmoz.com/categories/math/"},{"id":"text","name":"Text & writing","url":"https://toolmoz.com/categories/text/"},{"id":"data","name":"Data & CSV","url":"https://toolmoz.com/categories/data/"},{"id":"images","name":"Images & photos","url":"https://toolmoz.com/categories/images/"},{"id":"files","name":"PDF & files","url":"https://toolmoz.com/categories/files/"},{"id":"design","name":"Design & colour","url":"https://toolmoz.com/categories/design/"},{"id":"development","name":"Developer tools","url":"https://toolmoz.com/categories/development/"},{"id":"everyday","name":"Everyday & games","url":"https://toolmoz.com/categories/everyday/"}],"tools":[{"slug":"recipe-scaler","name":"Recipe scaler","description":"More guests? Same great recipe. Get every ingredient just right.","url":"https://toolmoz.com/tools/recipe-scaler/","category":"cooking","method":"Amounts are multiplied by target servings divided by original servings. Results round to two decimal places. Adjust seasoning, cooking times and pan sizes separately.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"length-converter","name":"Length converter","description":"Metres, feet, inches and everything in between.","url":"https://toolmoz.com/tools/length-converter/","category":"conversion","method":"Uses defined metric and imperial conversion factors. One inch is exactly 0.0254 metres. Results are rounded for display.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bill-splitter","name":"Bill splitter","description":"Good company. Fair shares. Split the bill, tip included.","url":"https://toolmoz.com/tools/bill-splitter/","category":"money","method":"The total includes your chosen tip. Shares are rounded to two decimal currency units; spare pennies are distributed explicitly so the shares add up.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"percentage-calculator","name":"Percentage calculator","description":"Discounts, increases and everyday percentage puzzles.","url":"https://toolmoz.com/tools/percentage-calculator/","category":"math","method":"Choose a percentage of a number, subtract a percentage, or add one. The original amount is the basis of each calculation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"temperature-converter","name":"Temperature converter","description":"From oven settings to the weather on your next trip.","url":"https://toolmoz.com/tools/temperature-converter/","category":"conversion","method":"Fahrenheit = Celsius × 9/5 + 32. Kelvin = Celsius + 273.15. This converts units only, without adjustments for fan ovens.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-difference","name":"Date difference","description":"Count the days between a beginning and a big moment.","url":"https://toolmoz.com/tools/date-difference/","category":"dates","method":"Counts calendar days. The start date is excluded and the end date is included. Weekends and holidays count; clock changes do not affect the calculation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"weight-converter","name":"Weight converter","description":"Grams to ounces. Kilograms to pounds. A weight off your mind.","url":"https://toolmoz.com/tools/weight-converter/","category":"conversion","method":"Uses international avoirdupois units. One pound is exactly 0.45359237 kilograms. Mass and volume are different; ingredient densities are needed for cups-to-grams conversions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"word-counter","name":"Word & character counter","description":"A little clarity for essays, posts and everything you write.","url":"https://toolmoz.com/tools/word-counter/","category":"text","method":"Words are separated by whitespace. Character counts use Unicode code points. Sentence counts are approximate; reading time assumes 200 words per minute.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"knitting-shaping-planner","name":"Knitting shaping row planner","description":"Distribute one-stitch increases or decreases across a row schedule.","url":"https://toolmoz.com/tools/knitting-shaping-planner/","category":"crafts","method":"Distributes absolute stitch-count changes using cumulative-floor allocation across the supplied rows. Supports at most one increase/decrease per row and requires enough rows for the change. Shows the stitch count after every row, up to 1,000 rows. This is an arithmetic count schedule; it does not specify where to place stitches, garment shaping, gauge or pattern technique.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"crochet-circle-rounds","name":"Crochet circle round counts","description":"Build a round-by-round stitch-count reference for constant increases.","url":"https://toolmoz.com/tools/crochet-circle-rounds/","category":"crafts","method":"For round r, total stitches = base × r. After the first ring, add base stitches per round; the number of ordinary base stitches between increases is r−2. This is a count reference for a constant-increase construction, not a guarantee that fabric lies flat. Stitch height, yarn, tension and technique must suit the project.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"quilt-block-layout","name":"Quilt block layout planner","description":"Preview a square-block quilt and calculate finished and cut dimensions.","url":"https://toolmoz.com/tools/quilt-block-layout/","category":"crafts","method":"Uses a straight-set rectangular grid of square finished blocks, without sashing or borders. Finished width/height multiply block size by counts; cut square side adds two seam allowances. Supports at most 400 blocks with an accessible SVG layout and plot download. Diagram units are inches; it is a block plan rather than fabric nesting or seam-pressing guidance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"half-square-triangle-cuts","name":"Half-square triangle cut planner","description":"Plan two-at-a-time HST starting squares with explicit trimming allowance.","url":"https://toolmoz.com/tools/half-square-triangle-cuts/","category":"crafts","method":"For a two-at-a-time diagonal construction, theoretical starting square side = finished side + 2s + √2s, where s is seam allowance. Adds your trim allowance to the starting square and rounds up to the next ⅛ inch. Each pair of starting squares yields two units; odd requested counts produce one spare. Results assume accurate seams and trimming, not a sewing tutorial.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"patchwork-strip-yield","name":"Patchwork strip cutting yield","description":"Estimate fabric length and spare pieces from repeated rectangular strip cuts.","url":"https://toolmoz.com/tools/patchwork-strip-yield/","category":"crafts","method":"Subtracts two selvage allowances, floors usable width divided by crosscut size, and rounds required strips up to a whole strip. Fabric length is strip count × cut strip width, also shown in yards. All dimensions are cut sizes including any required seam allowances. Does not nest scraps, join strips, match prints or account for shrinkage.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cross-stitch-fabric-size","name":"Cross-stitch fabric size","description":"Preview the stitched rectangle and fabric margins from count and stitch dimensions.","url":"https://toolmoz.com/tools/cross-stitch-fabric-size/","category":"crafts","method":"Stitched inches = pattern stitches × threads spanned per stitch ÷ fabric count. Adds the supplied margin to every side and converts inches to centimetres using 2.54 exactly. Use one for ordinary Aida squares; counted evenweave over two uses two. The SVG shows stitched and cut boundaries, without adding backing, hem or frame rebates.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"DMC Aida fabric count","url":"https://www.dmc.com/GP/en-GB/products/aida-embroidery-fabric"}]},{"slug":"embroidery-thread-budget","name":"Embroidery thread budget","description":"Estimate skein quantity from measured stitch use and working strands.","url":"https://toolmoz.com/tools/embroidery-thread-budget/","category":"crafts","method":"Multiplies stitch count by your measured per-stitch single-strand length, working strands and waste factor. A skein supplies bundled length × bundled strand count of single-strand thread. Rounds skeins upward and assumes all strands can be separated and used. It does not assume a universal stitch length or account for colour-by-colour leftovers.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"weaving-sett-planner","name":"Weaving sett and reed planner","description":"Compare target warp ends with a fixed reed denting arrangement.","url":"https://toolmoz.com/tools/weaving-sett-planner/","category":"crafts","method":"Warp ends = ceiling(target width × target ends per inch) plus supplied edge ends. Occupied dents round ends divided by ends-per-dent up, and reed width divides dents by dents-per-inch. Effective sett assumes uniform denting; a partial final dent and extra edges can change local density. Does not infer a suitable sett from yarn type.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"warp-length-planner","name":"Weaving warp length budget","description":"Budget warp per end and total yarn for repeated woven pieces.","url":"https://toolmoz.com/tools/warp-length-planner/","category":"crafts","method":"Adds finished piece lengths and between-piece spacing, then divides by one minus supplied shrinkage. Adds loom waste once per warp end and multiplies by end count for total warp yarn. Shrinkage is a length fraction applied to the woven section; include take-up separately in your assumptions. Does not estimate weft or loom capacity.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"macrame-cord-budget","name":"Macramé cord cutting budget","description":"Turn a measured knot multiplier into cut lengths and spool counts.","url":"https://toolmoz.com/tools/macrame-cord-budget/","category":"crafts","method":"Per-cord cut length = finished working length × your measured cord-use multiplier + two tail allowances. Multiplies by number of cords and rounds spool quantity up. Use a sample knot section to choose the multiplier; folded/doubled cords must use consistent entered lengths. Does not assume all knots consume the same amount.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"frame-mat-layout","name":"Picture frame mat layout","description":"Preview an artwork opening with centred or bottom-weighted borders.","url":"https://toolmoz.com/tools/frame-mat-layout/","category":"crafts","method":"Left/right borders divide the width difference equally. Top/bottom divide the height difference, with half the supplied bottom-minus-top weighting transferred from top to bottom. Rejects negative borders. SVG uses actual opening dimensions in mm; artwork overlap, bevel cut width and frame rebates must be included in the chosen dimensions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"resin-volume-budget","name":"Resin casting material budget","description":"Estimate mixed volume and component masses from supplied product data.","url":"https://toolmoz.com/tools/resin-volume-budget/","category":"crafts","method":"Calculates rectangular or circular volume in cubic mm, converts to mL, adds waste and uses your mixed density to estimate mass. Splits mass using your manufacturer-supplied A:B ratio by mass. Ratios by volume must not be substituted. Does not prescribe a resin formulation, maximum pour thickness, cure temperature or handling procedure.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"square-foot-garden-layout","name":"Square-foot garden grid","description":"Create a labelled planting allocation grid from your chosen cell density.","url":"https://toolmoz.com/tools/square-foot-garden-layout/","category":"garden","method":"Draws a rectangular grid of one-square-foot cells and exports row/column allocation with your supplied plant count per cell. Supports up to 100 cells. Total allocation is cells × chosen density; no crop-specific spacing, yield, companion planting or access assumptions are made. SVG coordinates are feet, increasing upwards.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"garden-sowing-calendar","name":"Garden sowing date worksheet","description":"Turn crop offsets into dated sowing and transplant plans.","url":"https://toolmoz.com/tools/garden-sowing-calendar/","category":"garden","method":"Adds your signed whole-day offsets to a supplied frost reference date. Negative offsets are before the reference, positive after; an empty transplant offset remains blank. Accepts up to 1,000 crop rows and offsets from −3650 to 3650 days. No frost history, regional calendar or suitable crop dates are inferred; choose them for your location and seed instructions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"succession-planting-schedule","name":"Succession planting schedule","description":"Plan repeated sowings and expected harvest dates on a calendar.","url":"https://toolmoz.com/tools/succession-planting-schedule/","category":"garden","method":"Creates fixed-day sowing intervals from a strict Gregorian start date and adds your supplied days-to-harvest to each sowing. Supports up to 100 batches; dates must stay in years 0001–9999. Unit counts are planning quantities, not predicted germination or yield. Weather and cultivar maturity can shift actual harvest dates.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"seed-germination-log","name":"Seed germination batch log","description":"Compare observed germination rates across your seed batches.","url":"https://toolmoz.com/tools/seed-germination-log/","category":"garden","method":"Calculates 100 × observed germinated seeds ÷ seeds sown for each batch. Requires positive whole seeds sown and germinated counts between zero and that total. Up to 1,000 rows. This is an observed proportion at the chosen assessment time, without confidence intervals or adjustments for dormancy, conditions and future storage viability.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"drip-zone-planner","name":"Drip irrigation zone budget","description":"Group whole drip lines within a supplied flow capacity.","url":"https://toolmoz.com/tools/drip-zone-planner/","category":"garden","method":"Calculates line flow from emitter count × supplied emitter flow, then first-fit packs complete lines into zones in input order. A single line exceeding the supplied capacity is rejected. Up to 1,000 lines. This is a flow budget heuristic, not a pressure/friction model or guarantee of emitter output; zone count may not be minimal.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sprinkler-catch-can-test","name":"Sprinkler catch-can analysis","description":"Calculate catch-depth uniformity and application rate from your measurements.","url":"https://toolmoz.com/tools/sprinkler-catch-can-test/","category":"garden","method":"For equal-area evenly spaced catches, reports mean depth, lowest-quarter mean, DU = lower-quarter/overall mean, and Christiansen CU = 1 − sum absolute deviations/(N × mean), as percentages. Mean rate is depth × 60/test minutes. Requires 4–1,000 measurements in multiples of four so the quarter is exact. CU is not clamped and can be negative. Not the area-weighted pivot method.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"UMN Extension home irrigation audit","url":"https://extension.umn.edu/garden-and-home/yard-and-garden/lawns-and-landscapes-in-minnesota/auditing-home-lawn-irrigation-systems"}]},{"slug":"compost-cn-blend","name":"Compost carbon–nitrogen mass balance","description":"Combine supplied dry-mass carbon and nitrogen compositions.","url":"https://toolmoz.com/tools/compost-cn-blend/","category":"garden","method":"Sums dry mass × carbon/nitrogen mass fraction separately and divides total carbon by total nitrogen. Requires positive total nitrogen and carbon plus nitrogen percentages no greater than 100 for each material. Uses supplied dry-basis composition rather than generic material values. Does not predict moisture, decomposition, heat generation or a suitable recipe.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fertiliser-nutrient-budget","name":"Fertiliser nutrient mass budget","description":"Sum declared N–P₂O₅–K₂O masses across listed products.","url":"https://toolmoz.com/tools/fertiliser-nutrient-budget/","category":"garden","method":"Multiplies each product mass by each supplied grade percentage and sums product/N/P₂O₅/K₂O totals. Values are mass percentages from 0–100; oxide equivalents are retained as labelled, not converted to elemental phosphorus/potassium. Up to 1,000 rows. This is an inventory calculation and does not recommend application rates or replace soil testing/product instructions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"recipe-batch-scaler","name":"Recipe batch scaling table","description":"Scale a complete ingredient table while retaining each stated unit.","url":"https://toolmoz.com/tools/recipe-batch-scaler/","category":"cooking","method":"Scales every numeric non-negative ingredient quantity by target/original servings or batch count. Units remain unchanged and are not converted or combined; up to 1,000 ingredient rows. Scaling arithmetic does not imply cooking time, seasoning, pan geometry or discrete ingredients such as eggs scale linearly.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ingredient-percentage-table","name":"Ingredient composition table","description":"Express each ingredient as a percentage of the total mix mass.","url":"https://toolmoz.com/tools/ingredient-percentage-table/","category":"cooking","method":"Adds all supplied gram masses and reports 100 × each ingredient mass/total mass. Requires positive total mass, with zero-mass ingredients allowed. These are total-mixture percentages, distinct from flour-basis baker’s percentages. No nutrient, hydration or dietary composition is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pizza-party-planner","name":"Pizza party portion planner","description":"Combine group appetites and round the slice budget up to whole pizzas.","url":"https://toolmoz.com/tools/pizza-party-planner/","category":"cooking","method":"Sums people × supplied slices per person for each group, adds your percentage allowance and rounds up at the selected slices per pizza. People and slice counts per pizza are whole numbers; per-person appetite may be fractional. This is a portion budget rather than a nutritional recommendation or size-equivalence calculation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"dough-water-temperature","name":"Desired dough water temperature","description":"Apply the empirical temperature-factor worksheet with your mixer friction value.","url":"https://toolmoz.com/tools/dough-water-temperature/","category":"cooking","method":"Uses water temperature = 3 × desired dough temperature − room − flour − friction, or four factors including preferment temperature. This empirical bakery method uses a measured mixer-specific friction factor; it is not a heat-capacity balance and can produce impractical water temperatures when assumptions are unsuitable. All values use Celsius consistently.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur desired dough temperature","url":"https://www.kingarthurbaking.com/pro/reference/dough-temperature"}]},{"slug":"coffee-extraction-log","name":"Coffee extraction comparison log","description":"Compare apparent extraction yield from dose, beverage mass and measured TDS.","url":"https://toolmoz.com/tools/coffee-extraction-log/","category":"cooking","method":"Apparent extraction (%) = beverage mass × measured TDS (%) ÷ dry coffee dose. Also reports beverage/dose mass ratio. Dose must be positive and TDS 0–100. This beverage-only arithmetic does not correct retained liquid, suspended particles or refractometer bias and does not prescribe a taste target.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"starter-build-planner","name":"Multi-stage starter build budget","description":"Track flour, water and carried starter mass across explicit feeding stages.","url":"https://toolmoz.com/tools/starter-build-planner/","category":"cooking","method":"Each stage uses the entire previous build as seed, adding flour and water according to supplied grams per gram of seed. No discard is assumed; totals become the next stage’s seed. Supports 1,000 stages with a 1-billion-gram maximum build. This is mass budgeting, without fermentation timing, maturity or temperature predictions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"meal-prep-allocation","name":"Meal prep container allocation","description":"Allocate whole portions into full containers and a remainder container.","url":"https://toolmoz.com/tools/meal-prep-allocation/","category":"cooking","method":"For each dish, divides whole portion count by positive whole portions per container. Reports full containers, remainder portions and total containers, with an extra container only when remainder is non-zero. Supports 1,000 dishes. Does not determine nutritional portions, suitable storage conditions, expiry dates or container volume.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"dehydration-mass-balance","name":"Dehydration mass balance","description":"Estimate final mass from starting and target wet-basis water percentages.","url":"https://toolmoz.com/tools/dehydration-mass-balance/","category":"cooking","method":"Conserves non-water solids: dry mass = initial mass × (1 − initial water fraction); final mass = dry mass/(1 − target water fraction). Requires lower target water percentage. Assumes only water is removed and all solids remain; no drying time, preservation safety, moisture activity or shelf life is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"shelf-panel-cut-list","name":"Shelf carcass panel cut list","description":"List rectangular panels for a simple between-side shelf cabinet.","url":"https://toolmoz.com/tools/shelf-panel-cut-list/","category":"home","method":"Assumes full-height side panels, with top/bottom and internal shelves fitted between the sides. Between-side width subtracts two panel thicknesses. Lists panel quantity and cut dimensions; no back panel, grooves, kerf, edging or joinery allowances. This is a dimensional worksheet and does not establish structural strength or shelf load capacity.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"paver-grid-layout","name":"Paver grid and edge-cut plan","description":"Preview a straight paver grid and export every full or edge-cut position.","url":"https://toolmoz.com/tools/paver-grid-layout/","category":"home","method":"Starts with a full unrotated rectangular paver at one corner, repeats with internal gaps and clips final positions to the area edges. Reports each position’s required dimensions and full/edge-cut status. At most 400 positions. Does not optimise offcut reuse, rotate tiles or add perimeter movement gaps, base layers and waste.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"blind-measurement-worksheet","name":"Window blind measurement worksheet","description":"Compare three opening measurements and apply a supplied deduction.","url":"https://toolmoz.com/tools/blind-measurement-worksheet/","category":"home","method":"Uses the minimum of three width readings and minimum of three height readings per window. Subtracts your total deduction once from each dimension, rejecting non-positive results. Up to 1,000 windows. Supplier conventions differ; this does not choose inside/outside mounting, clearance or a supplier-specific manufacturing size.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"moving-box-weight-planner","name":"Moving box weight allocation","description":"Group listed item units within your chosen box mass budget.","url":"https://toolmoz.com/tools/moving-box-weight-planner/","category":"home","method":"Expands whole quantities into at most 2,000 units, sorts by mass descending and first-fit packs units into boxes. Rejects an item heavier than the supplied capacity. This heuristic may not minimise boxes and models mass only; it does not account for box tare, item dimensions, fragility, safe handling or packaging strength.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"event-seating-planner","name":"Party seating allocation","description":"Keep parties together while filling tables with a simple transparent heuristic.","url":"https://toolmoz.com/tools/event-seating-planner/","category":"planning","method":"First-fit allocates complete parties in source order to the first table with enough free seats. Rejects a party larger than table capacity and exports table totals/spare seats. Up to 1,000 parties. This heuristic is not a guaranteed minimum-table solution and does not model preferences, accessibility, reserved places or venue constraints.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"volunteer-role-rotation","name":"Volunteer role rotation","description":"Create repeatable round-by-round role assignments from your own participant list.","url":"https://toolmoz.com/tools/volunteer-role-rotation/","category":"planning","method":"Assigns simultaneous roles to consecutive people and shifts the starting person each round. Requires distinct names/roles and at least as many people as roles, up to 50 each. Each person has at most one role per round; over a complete participant cycle each person gets every role once. Does not consider availability, qualifications or rest requirements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"round-robin-fixtures","name":"Round-robin fixture maker","description":"Generate every pair once, with automatic byes for odd participant counts.","url":"https://toolmoz.com/tools/round-robin-fixtures/","category":"planning","method":"Uses the circle method for 2–32 distinct participants. Even counts have N−1 rounds; odd counts add a dummy bye and use N rounds. Each real pair meets exactly once and no participant appears twice in a round. Bye rows are labelled. Home/away fairness, venue availability, dates and travel are not optimised.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"knockout-bracket-planner","name":"Knockout bracket worksheet","description":"Build a single-elimination match path with first-round byes.","url":"https://toolmoz.com/tools/knockout-bracket-planner/","category":"planning","method":"Expands 2–64 entrants to the next power-of-two bracket size. Gives first-round byes to earlier supplied seeds, pairs remaining entrants in order and labels later matches by previous winners. This is a simple planning worksheet rather than an official sport-specific seeding convention; no random draw, consolation bracket or match results are inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"packing-weight-manifest","name":"Packing weight manifest","description":"Sum item quantities and compare the contents mass of each named bag.","url":"https://toolmoz.com/tools/packing-weight-manifest/","category":"planning","method":"Multiplies whole quantity by non-negative grams each, preserving listed rows, and totals by exact bag name. Up to 1,000 source rows. Contents mass excludes bag tare unless entered as an item. Does not infer airline allowances, restricted articles, luggage dimensions or suitable packing choices.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"household-chore-rotation","name":"Household chore rotation","description":"Create a weekly task worksheet with a predictable person rotation.","url":"https://toolmoz.com/tools/household-chore-rotation/","category":"planning","method":"Assigns task i in week w to person (i+w) modulo participant count, giving each task to every person over a complete cycle. Up to 30 people, 100 tasks and 52 weeks. A person can have multiple tasks in one week; tasks are treated equally without effort weights or availability constraints.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"parallel-task-scheduler","name":"Parallel task schedule planner","description":"Schedule independent jobs across equal lanes and visualise elapsed time.","url":"https://toolmoz.com/tools/parallel-task-scheduler/","category":"planning","method":"Sorts tasks by duration descending and assigns each to the currently least-loaded lane, preserving input order for ties. Reports start/finish minutes from zero and overall makespan. Jobs are independent and cannot pause; no dependencies, setup times or staff constraints are modelled. This LPT heuristic is not always optimal. Up to 1,000 tasks; plot includes the first 100.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"deadline-status-board","name":"Deadline status board","description":"Sort a dated task table by days remaining relative to your reference date.","url":"https://toolmoz.com/tools/deadline-status-board/","category":"planning","method":"Subtracts strict Gregorian YYYY-MM-DD dates in UTC calendar days and sorts ascending by days remaining. Labels negative differences overdue, zero due today and positive upcoming. Up to 1,000 tasks, with dates in years 0001–9999. Reference date is explicit; no automatic reminders, business-day or public-holiday adjustment.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"text-concordance","name":"Text concordance / KWIC","description":"Inspect every literal keyword occurrence with surrounding context.","url":"https://toolmoz.com/tools/text-concordance/","category":"text","method":"Finds non-overlapping literal matches, with optional Unicode-aware case-insensitive matching. Exports keyword-in-context rows with before/match/after text and one-based UTF-16 positions. Context lengths use UTF-16 code units, so a boundary can split a surrogate pair. Limited to 100,000 input characters and 2,000 matches; no stemming, patterns or word-boundary inference.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ngram-analyser","name":"N-gram frequency analyser","description":"Find repeated word phrases or character sequences in local text.","url":"https://toolmoz.com/tools/ngram-analyser/","category":"text","method":"Counts overlapping windows of length 2–5 across at most 100,000 characters. Word mode lowercases and extracts Unicode letters/numbers with internal apostrophes, ignoring punctuation boundaries; character mode includes exact whitespace and case. Sorts frequency descending, then lexical spelling. Percentages use all windows, not just top results. Does not perform linguistic segmentation or semantic phrase extraction.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"lexical-text-similarity","name":"Lexical text similarity","description":"Compare token overlap and frequency with three transparent scores.","url":"https://toolmoz.com/tools/lexical-text-similarity/","category":"text","method":"Tokenises lowercase Unicode letters/numbers with internal apostrophes. Reports set Jaccard, set Dice and term-frequency cosine as percentages. Each text is capped at 100,000 characters and must contain a word. Scores ignore word order, meaning, synonyms and punctuation; they are descriptive lexical overlap, not semantic similarity or a plagiarism verdict.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fuzzy-string-matcher","name":"Fuzzy string list matcher","description":"Rank candidate names or labels by editable character distance.","url":"https://toolmoz.com/tools/fuzzy-string-matcher/","category":"text","method":"Computes Levenshtein insertion/deletion/substitution distance over Unicode code points, each cost one. Normalised similarity is 100 × (1 − distance/max length). Keeps input order for tied distances, without transposition discounts, accent folding or semantic inference. Supports up to 500 non-empty candidate lines of 200 code points and a query up to 200 UTF-16 units.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"character-frequency","name":"Character frequency table","description":"Count exact characters and spot repeated whitespace or unusual code points.","url":"https://toolmoz.com/tools/character-frequency/","category":"text","method":"Counts Unicode code points across at most 100,000 UTF-16 characters, including whitespace, controls and combining marks. Shows JSON-escaped spelling, U+ value, count and percentage of all code points. Sorts by count then spelling. This counts code points rather than grapheme clusters or rendered glyphs; no normalisation is applied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"literal-text-redactor","name":"Literal text redactor","description":"Replace a supplied list of private terms with a consistent marker.","url":"https://toolmoz.com/tools/literal-text-redactor/","category":"text","method":"Replaces non-overlapping literal matches, prioritising longer supplied alternatives at the same position. Up to 100 terms of 200 characters, a 100-character marker, 100,000 input characters and 2 million output characters. This only removes terms you list, including substrings; it does not discover personal data or guarantee complete anonymisation. Output stays on this device.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"unicode-normaliser","name":"Unicode text normaliser","description":"Compare canonical or compatibility Unicode forms and export normalised text.","url":"https://toolmoz.com/tools/unicode-normaliser/","category":"text","method":"Applies the chosen native Unicode normalisation form and reports before/after code-point and UTF-8 byte counts. Canonical forms preserve canonical equivalence; compatibility forms can remove meaningful distinctions such as ligatures or circled-number styling. Uses the Unicode tables supplied by your browser, with at most 100,000 input characters.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Unicode Standard Annex #15","url":"https://www.unicode.org/reports/tr15/"}]},{"slug":"unicode-escape-converter","name":"Unicode escape converter","description":"Encode text as Unicode escapes or decode them without executing code.","url":"https://toolmoz.com/tools/unicode-escape-converter/","category":"text","method":"Encoding escapes every character as UTF-16 units or braced code points. Decoding accepts \\uXXXX and \\u{1–6 hex digits}, retains ordinary characters, and rejects other backslash escapes, invalid scalar values and unpaired surrogates. Supplementary characters round-trip through paired UTF-16 escapes. Supports up to 100,000 input characters; this is not a JavaScript string-literal parser.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"email-list-cleaner","name":"Email address list cleaner","description":"Trim and deduplicate a simple address list while reporting syntax problems.","url":"https://toolmoz.com/tools/email-list-cleaner/","category":"text","method":"Accepts a pragmatic ASCII dot-atom local part and dot-separated hostname labels, excluding empty/consecutive-dot local segments. Trims outer whitespace, folds domain case and retains local-part case. Caps 10,000 lines, local parts at 64 characters and total address at 254. Does not support quoted mailboxes, display names or internationalised addresses, and does not verify DNS/delivery/ownership. Download contains accepted unique addresses only; the table also reports rejected lines.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"isbn-checker","name":"ISBN checksum and converter","description":"Check ISBN-10/13 digits and convert compatible book number formats.","url":"https://toolmoz.com/tools/isbn-checker/","category":"text","method":"Removes spaces/hyphens, checks ISBN-10 weighted modulo 11 or 978/979 ISBN-13 weighted modulo 10, and converts valid ISBN-10 to 978 ISBN-13. Only a 978 ISBN-13 can convert back. Checksum validity does not confirm assignment, title or publisher. Does not infer hyphenation or registration groups.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"International ISBN Agency","url":"https://www.isbn-international.org/"}]},{"slug":"barcode-check-digit","name":"Barcode check digit calculator","description":"Generate or check EAN-8, UPC-A and EAN-13 arithmetic checksums.","url":"https://toolmoz.com/tools/barcode-check-digit/","category":"text","method":"Starting at the rightmost body digit, alternates weights 3 and 1. The check digit is the amount needed to reach a multiple of 10. Requires exact format length and preserves leading zeros. This checks numeric composition only; it does not allocate a GS1 identifier, establish a product record or generate a barcode image.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"GS1 check digit calculation","url":"https://www.gs1.org/services/how-calculate-check-digit-manually"}]},{"slug":"luhn-checksum","name":"Luhn checksum calculator","description":"Generate or verify a modulo-10 check digit on a numeric string.","url":"https://toolmoz.com/tools/luhn-checksum/","category":"text","method":"Doubles every second digit from the right, beginning with the rightmost body digit before the check digit. Adds decimal digits of doubled values and chooses a check digit making the total divisible by 10. Accepts up to 100 body digits and retains zeros. A passing checksum is arithmetic only and does not verify an account, issuer, ownership or valid allocation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-dataset-diff","name":"CSV dataset diff","description":"Compare two keyed datasets and export exact record and cell changes.","url":"https://toolmoz.com/tools/csv-dataset-diff/","category":"data","method":"Matches exact unique text keys, including blanks, and compares columns by heading rather than position. Both tables must have the same headings; duplicate keys are rejected. Reports added/removed whole records and changed cells, with up to 20,000 changes. Leading zeros and all cell strings are preserved. Original order drives removals/changes; new rows follow updated order.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-schema-validator","name":"CSV rule validator","description":"Check required fields and declared column types without uploading records.","url":"https://toolmoz.com/tools/csv-schema-validator/","category":"data","method":"Rules name existing columns once, with Type string/integer/number/boolean/date/email and Required yes/no. Empty means exactly zero characters; unlisted columns are ignored. Integers are decimal digit strings, numbers are finite decimals up to magnitude 1e100, booleans are lowercase true/false, dates are strict Gregorian ISO dates, and email uses a pragmatic ASCII syntax check. Counts every violation; result/export includes the first 1,000. Does not check email delivery.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-calculated-column","name":"CSV calculated column","description":"Apply a safe mathematical expression to a numeric column and append the result.","url":"https://toolmoz.com/tools/csv-calculated-column/","category":"data","method":"Evaluates the restricted expression grammar used by the function plotter, with x bound to each chosen decimal cell. Supports arithmetic and documented mathematical functions without executing JavaScript. Appends a unique heading, preserving original columns/order. Non-finite results or magnitudes above 1e100 are rejected; blank handling is explicit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-row-ranking","name":"CSV rank and percentile","description":"Rank rows with clear tie rules and retain the original record order.","url":"https://toolmoz.com/tools/csv-row-ranking/","category":"data","method":"Computes competition, dense or average-position ranks from finite numeric cells. Also appends numeric-value percentile rank using average tie positions: 100 × (average zero-based ascending position)/(N−1), with singleton 100. Percentile is independent of chosen ranking direction. Blank values are errors. Original record order is retained and two unique output columns are required.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-rolling-window","name":"Grouped CSV rolling window","description":"Add trailing moving summaries while keeping groups and input order intact.","url":"https://toolmoz.com/tools/csv-rolling-window/","category":"data","method":"Uses the latest N records encountered within each exact group, including the current record and initial partial windows. Computes mean, sum, minimum or maximum; does not sort dates or infer a time interval. Requires numeric non-blank cells. Rows × window is capped at 2 million operations; ordinary CSV limits also apply.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-group-fill-down","name":"Grouped CSV fill down","description":"Carry previous non-empty values forward separately within each group.","url":"https://toolmoz.com/tools/csv-group-fill-down/","category":"data","method":"Tracks the last non-missing cell for each exact grouping value in input order. Fills only missing target cells and leaves leading missing cells unchanged. Groups may be interleaved. Does not sort, look ahead, interpolate numeric values or carry values across different groups.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-recode-values","name":"CSV value recoder","description":"Apply an explicit whole-cell value map without substring replacements.","url":"https://toolmoz.com/tools/csv-recode-values/","category":"data","method":"Maps exact case-sensitive From values to To values simultaneously. Duplicate From keys are rejected; empty mappings are allowed. Unmatched values follow the chosen keep/blank/error rule. This replaces complete cells and preserves identifiers; it does not use patterns, trim text or perform sequential find-and-replace.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-pad-identifiers","name":"CSV identifier padding","description":"Pad textual IDs to a fixed minimum width without losing leading zeros.","url":"https://toolmoz.com/tools/csv-pad-identifiers/","category":"data","method":"Counts Unicode code points and pads on the chosen side using one supplied code point. Values already at least the requested width are retained unchanged. No numeric conversion, trimming or truncation occurs. One code point can occupy several UTF-16 units; visual grapheme width may differ.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-date-format","name":"CSV date reformatter","description":"Reformat a column of strict ISO dates without locale guessing.","url":"https://toolmoz.com/tools/csv-date-format/","category":"data","method":"Validates non-empty input cells as Gregorian YYYY-MM-DD dates in years 0001–9999, then rearranges the date parts. Empty cells remain empty; whitespace and ambiguous dates are rejected. UTC validation avoids local time-zone shifts. Formatting changes the selected column only.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-numeric-string-cleaner","name":"CSV numeric string cleaner","description":"Remove declared grouping and currency wrappers while preserving decimal digits.","url":"https://toolmoz.com/tools/csv-numeric-string-cleaner/","category":"data","method":"Uses explicit decimal/grouping marks and optional required prefix/suffix. Grouped integer portions need 1–3 initial digits followed by groups of exactly three. Supports a single sign or enclosing negative parentheses, with outer/wrapper whitespace trimmed. Empty cells remain empty; exponents are unsupported. Decimal digits are preserved as strings, with a finite magnitude check up to 1e100. Do not use on identifiers.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-explode-cell-rows","name":"CSV split cells into rows","description":"Expand list-valued cells into separate records using a literal separator.","url":"https://toolmoz.com/tools/csv-explode-cell-rows/","category":"data","method":"Splits one selected cell on a non-empty literal separator and repeats all remaining fields for each piece. Preserves piece order, whitespace and empty pieces. Does not interpret escaped separators or nested list syntax. Output is bounded to 50,000 rows, 2 million cells and 32 million characters; reduce the expansion when limits are reached.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-group-concatenate","name":"CSV group and concatenate","description":"Collect text values into one ordered list per group.","url":"https://toolmoz.com/tools/csv-group-concatenate/","category":"data","method":"Groups exact keys in first-seen order and concatenates target strings in input order. Optional uniqueness uses exact cell text; empty strings participate. Includes source row counts even when deduplicating values. This is a text aggregation, with ordinary result size/cell limits.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-horizontal-concat","name":"CSV side-by-side combiner","description":"Combine tables by row position with strict or blank-padded alignment.","url":"https://toolmoz.com/tools/csv-horizontal-concat/","category":"data","method":"Aligns first data row with first data row and so on, without matching keys. Requires equal row counts by default; padding mode retains the longer table. Right headings keep their name when free, otherwise receive a collision-safe Right. prefix and suffix. Original cells stay text; output is capped at 200 columns and 2 million cells.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-missing-data-map","name":"CSV missingness map","description":"Visualise empty-cell patterns and compare completeness across columns.","url":"https://toolmoz.com/tools/csv-missing-data-map/","category":"data","method":"Counts missing/present cells across the complete dataset and distinct row presence patterns. An accessible SVG scatter grid shows missing versus present for the first 100 data rows and 20 columns; x/y labels use one-based positions. The downloadable table includes full-data per-column counts and percentages. Literal NULL, NA and zero are not treated as missing.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-record-cards","name":"CSV record card maker","description":"Turn table rows into printable cards with a safe local HTML preview.","url":"https://toolmoz.com/tools/csv-record-cards/","category":"data","method":"Creates a standalone HTML card document for up to 500 records. Every heading, cell and title is escaped, with no scripts, external fonts or assets. The first column supplies each card heading; all columns appear in a definition list. Preview uses a sandboxed frame; exported HTML has a restrictive content policy and print styles. Result is limited to 2 MB.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-sql-inserts","name":"CSV to SQL INSERT statements","description":"Build quoted INSERT statements while retaining text identifiers and values.","url":"https://toolmoz.com/tools/csv-sql-inserts/","category":"data","method":"Generates SQLite/PostgreSQL-style INSERT statements with double-quoted identifiers and single-quoted string literals, doubling embedded quotes. Table names are treated as one identifier, not schema-qualified syntax. All non-NULL values remain strings; no type inference or execution occurs. Rejects NUL characters, caps input at 10,000 rows and output at 2 MB. Review before importing into an existing database.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-file-splitter","name":"CSV file splitter","description":"Split a table into a ZIP of grouped or fixed-size CSV files.","url":"https://toolmoz.com/tools/csv-file-splitter/","category":"data","method":"Repeats the original heading row in each output file. Fixed chunks preserve input order; grouping collects exact values in first-seen order, retaining within-group order. ZIP includes up to 200 numbered path-safe filenames and 32 MB uncompressed data. Formula protection is applied to exported CSV cells. Copy result gives the file manifest; Download saves the ZIP.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-to-geojson-points","name":"CSV points to GeoJSON","description":"Build a GeoJSON FeatureCollection from latitude and longitude columns.","url":"https://toolmoz.com/tools/csv-to-geojson-points/","category":"data","method":"Requires finite decimal WGS84 latitude in −90…90 and longitude in −180…180 degrees. Emits GeoJSON Point coordinates in longitude, latitude order; other columns become string properties. No geocoding, reprojection or network lookup occurs. Blank coordinates are errors; output is limited to 2 MB and ordinary CSV row limits.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"json-pointer-query","name":"JSON Pointer query","description":"Select a nested value using an exact JSON Pointer, preserving large numeric tokens.","url":"https://toolmoz.com/tools/json-pointer-query/","category":"development","method":"Implements plain-string JSON Pointer syntax: / separates tokens, ~1 represents a slash and ~0 a tilde. Empty pointer selects the root; / selects an empty object key. Arrays use zero-based canonical integer indices, without leading zeros. Missing values and the nonexistent append index - are errors. URI-fragment pointers are not decoded. Duplicate keys are rejected, and large numbers remain exact text.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6901","url":"https://www.rfc-editor.org/rfc/rfc6901"}]},{"slug":"json-merge-patch","name":"JSON Merge Patch","description":"Apply an object merge patch or replace a JSON target with a new value.","url":"https://toolmoz.com/tools/json-merge-patch/","category":"development","method":"Applies RFC 7396 recursively: object patches merge members, null member values delete keys, and non-object patches replace the whole target. Arrays are replaced as complete values rather than merged by index. An object patch starts from an empty object when the target is not an object. Reserved JavaScript property names are treated as ordinary JSON keys. Output remains bounded to 2 MB.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 7396","url":"https://www.rfc-editor.org/rfc/rfc7396"}]},{"slug":"json-patch-apply","name":"JSON Patch applier","description":"Apply a checked sequence of add, remove, replace, move, copy and test operations.","url":"https://toolmoz.com/tools/json-patch-apply/","category":"development","method":"Applies up to 200 RFC 6902 operations to a copy of the input. Uses strict JSON Pointers, ordered array insertion and structural test equality; numerically equivalent decimal tokens compare equal exactly. Failed operations produce no partial output. Moving a node into its descendant is rejected. Removing the entire root is unsupported because it would leave no JSON value; replace root with null instead. Each intermediate/result document must remain within 2 MB and 64 levels.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6902","url":"https://www.rfc-editor.org/rfc/rfc6902"}]},{"slug":"json-structural-diff","name":"Structural JSON diff","description":"Compare nested JSON values by keys and array positions without rounding large identifiers.","url":"https://toolmoz.com/tools/json-structural-diff/","category":"development","method":"Recursively compares object members without regard to key order and arrays by index. Reports added, removed or changed values using escaped JSON Pointer paths. Numeric equality normalises decimal coefficients/exponents without converting them to floating point, so 1 and 1.0 compare equal while distinct large integers remain different. Limited to 10,000 reported changes. This is an index-based structural diff, not an optimal array edit script.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6901","url":"https://www.rfc-editor.org/rfc/rfc6901"}]},{"slug":"json-flatten-manifest","name":"JSON flatten & rebuild","description":"Create a reversible typed JSON Pointer manifest and rebuild the original structure.","url":"https://toolmoz.com/tools/json-flatten-manifest/","category":"development","method":"Flattening emits one path/type record for each value, including containers, with leaf values preserved exactly. Container markers distinguish arrays from numeric-keyed objects and retain empty arrays/objects. Rebuilding requires the root first, parents before children, unique paths and consecutive array indices. Up to 10,000 manifest records; ordinary JSON node/size/depth limits also apply. Choose rebuild and paste a manifest produced by flattening.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6901","url":"https://www.rfc-editor.org/rfc/rfc6901"}]},{"slug":"json-shape-summary","name":"JSON observed-shape summary","description":"Inspect path types and occurrence counts across a nested JSON document.","url":"https://toolmoz.com/tools/json-shape-summary/","category":"data","method":"Aggregates observed value types and counts by path, replacing concrete array indices with *. Object keys retain JSON Pointer escaping. A literal object key * shares that displayed wildcard spelling and is not a unique schema address. This is a descriptive inventory of the supplied values, not JSON Schema validation, required-field inference or proof that future records share the same shape.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6901","url":"https://www.rfc-editor.org/rfc/rfc6901"}]},{"slug":"json-ndjson-converter","name":"JSON array & NDJSON converter","description":"Convert between an array and one JSON value per line while preserving numeric tokens.","url":"https://toolmoz.com/tools/json-ndjson-converter/","category":"data","method":"Array mode writes each element as one compact JSON value per line; NDJSON mode parses every non-blank line separately and combines records into an array. Supports up to 10,000 records. Blank lines are ignored, duplicates inside objects are rejected, and every line must contain a complete strict JSON value. Numeric spelling/precision is retained. Input/result files stay bounded to 2 MB.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ndjson-record-filter","name":"NDJSON record filter","description":"Filter private line-delimited records using a JSON Pointer and typed equality.","url":"https://toolmoz.com/tools/ndjson-record-filter/","category":"data","method":"Processes up to 10,000 non-blank records, retaining original order. Pointer lookup must resolve an existing value; missing pointers never pass, including in differs mode. Equality is structural and type-sensitive, with exact decimal numeric equivalence. The exists mode ignores the expected-value field. Does not execute predicates, infer types, query remote services or persist record contents.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 6901","url":"https://www.rfc-editor.org/rfc/rfc6901"}]},{"slug":"geojson-inspector","name":"GeoJSON structure inspector","description":"Inspect geometry counts, position ranges and common structural errors locally.","url":"https://toolmoz.com/tools/geojson-inspector/","category":"outdoors","method":"Accepts GeoJSON geometries, Features and FeatureCollections in RFC 7946 longitude/latitude degrees. Checks basic geometry nesting, ring closure, position dimensions and coordinate ranges, up to 10,000 positions. Reports feature/geometry counts and simple coordinate extrema. Legacy CRS declarations are unsupported. Does not validate polygon topology, ring orientation, bbox members, geodesic bounds or antimeridian wrapping; this is not full RFC conformance validation.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 7946","url":"https://www.rfc-editor.org/rfc/rfc7946"}]},{"slug":"geojson-point-extractor","name":"GeoJSON points to CSV","description":"Extract Point and MultiPoint coordinates into an ordinary downloadable table.","url":"https://toolmoz.com/tools/geojson-point-extractor/","category":"outdoors","method":"Checks the supported GeoJSON structure, then extracts Point/MultiPoint positions, including those inside GeometryCollections. Other geometries are skipped and counted. CSV contains feature index, per-geometry point index, longitude, latitude and optional altitude; bare geometries use feature index zero. Properties are omitted. Coordinates are finite JavaScript numbers for CSV, while other JSON tools preserve numeric text.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 7946","url":"https://www.rfc-editor.org/rfc/rfc7946"}]},{"slug":"second-moment-area","name":"Rectangle section properties","description":"Find centroidal area moments and elastic section moduli for a rectangular section.","url":"https://toolmoz.com/tools/second-moment-area/","category":"engineering","method":"For an unperforated rectangle, Ix=b h³/12 and Iy=h b³/12 about centroidal axes. Elastic section moduli are Ix/(h/2) and Iy/(b/2). The polar area moment is Ix+Iy; it is not the Saint-Venant torsion constant for a rectangular bar. Reports area too. Input dimensions are millimetres; this does not check loads or material strength.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"beam-bending-stress","name":"Elastic bending stress","description":"Calculate outer-fibre normal stress from bending moment and elastic section modulus.","url":"https://toolmoz.com/tools/beam-bending-stress/","category":"engineering","method":"Uses the elementary elastic relation stress=M/Z, converting N·m to N·mm to report N/mm² (MPa). The supplied section modulus must refer to the same bending axis as the moment. Assumes linear elastic bending and an appropriate neutral axis. Does not infer yield, plastic redistribution, shear, buckling or combined-load capacity.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"beam-deflection","name":"Beam deflection curves","description":"Plot deflection along a simply supported or cantilever beam for common loading cases.","url":"https://toolmoz.com/tools/beam-deflection/","category":"engineering","method":"Uses Euler–Bernoulli small-deflection formulas for a prismatic, linear-elastic beam with ideal supports and constant E and I. Point loads use N; uniform loads use N/m according to the selected mode. Samples 101 positions, reporting maximum deflection and moment. Deflection is displayed as a positive magnitude. Neglects shear deformation, self-weight unless included in load, instability and support flexibility.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"euler-buckling","name":"Euler column buckling","description":"Estimate ideal elastic critical load from effective length and section inertia.","url":"https://toolmoz.com/tools/euler-buckling/","category":"engineering","method":"Uses Pcr=π²EI/(KL)² with user-supplied effective-length factor and least bending inertia. Reports critical average stress Pcr/A. Assumes a straight, slender elastic column with ideal end conditions, concentric compression and no imperfections. This is not a short-column yield model or a code-based design resistance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"torsional-shaft","name":"Circular shaft torsion","description":"Calculate elastic shear stress and twist for solid or hollow circular shafts.","url":"https://toolmoz.com/tools/torsional-shaft/","category":"engineering","method":"Uses J=π(Do⁴−Di⁴)/32, maximum shear stress=T Do/(2J), and twist=TL/(GJ). Inner diameter must be less than outer diameter. Assumes a uniform circular shaft, elastic material and pure Saint-Venant torsion. Stress concentrations, combined bending, yielding and end effects are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"axial-stretch","name":"Elastic axial extension","description":"Calculate axial stress, strain and length change of a uniform elastic member.","url":"https://toolmoz.com/tools/axial-stretch/","category":"engineering","method":"Stress=F/A, strain=stress/E, and extension=strain×original length. Positive force denotes tension and negative force compression. Assumes uniform uniaxial linear elasticity, constant area and small strain. Reports millimetres of signed length change. Buckling, temperature effects and non-elastic behaviour are not included.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"belt-pulley-speed","name":"Belt pulley speeds","description":"Compare pulley RPM and belt speed with a supplied slip allowance.","url":"https://toolmoz.com/tools/belt-pulley-speed/","category":"engineering","method":"Without slip, driven RPM=driver RPM×driver diameter/driven diameter. Applies your supplied fractional reduction to that ideal driven speed. Driver rim speed is πD×RPM/60. Diameters must use the belt pitch line. Belt stretch, torque capacity, pretension and dynamic effects are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"open-belt-length","name":"Open belt pitch length","description":"Find the geometric belt length and wrap angles between two pulleys.","url":"https://toolmoz.com/tools/open-belt-length/","category":"engineering","method":"Uses the exact external-tangent geometry of an open belt around two circular pitch diameters. Centre distance must exceed the sum of the pulley radii. Returns both pulley wrap angles and the total pitch-line length. Does not include belt stretch, pretension, standard stock-size rounding or crossed-belt geometry.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"compound-gear-train","name":"Compound gear train table","description":"Track stage ratios, speed and rotation direction through a compound external gear train.","url":"https://toolmoz.com/tools/compound-gear-train/","category":"engineering","method":"Each row supplies whole driver/driven tooth counts from 1–1 million. The next driver is assumed rigidly coupled to the preceding driven shaft. External meshes reverse direction at each stage; ratio and RPM propagate cumulatively. Supports up to 20 stages. Idlers, internal gears, differential/planetary constraints, efficiency and strength are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gear-pitch-geometry","name":"Spur gear pitch geometry","description":"Translate module and tooth count into common involute gear reference diameters.","url":"https://toolmoz.com/tools/gear-pitch-geometry/","category":"engineering","method":"Pitch diameter=m×z, circular pitch=πm and base diameter=pitch diameter×cos(pressure angle). Also shows unshifted full-depth reference outside diameter=m(z+2) and approximate root diameter=m(z−2.5). These reference dimensions do not specify tooth shape, fillet, backlash, undercut, profile shift or manufacturing tolerances.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"screw-linear-motion","name":"Lead screw motion & torque","description":"Relate screw lead, rotational speed, axial force and efficiency.","url":"https://toolmoz.com/tools/screw-linear-motion/","category":"engineering","method":"Linear speed=lead×RPM; lead is axial travel per revolution, not necessarily thread pitch on a multistart screw. Input torque=force×lead/(2πη), using your efficiency. Input mechanical power follows force×linear speed/η. Excludes acceleration, bearing drag outside the supplied efficiency, self-locking, buckling and load ratings.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"hydraulic-cylinder","name":"Hydraulic cylinder force & speed","description":"Compare extension and retraction force, speed and stroke time.","url":"https://toolmoz.com/tools/hydraulic-cylinder/","category":"engineering","method":"Uses piston area for extension and annular area for retraction, with rod diameter smaller than bore. Force=pressure difference×active area; velocity=flow/active area. Stroke times use constant supplied flow. Assumes incompressible fluid, ideal seals and stated pressure differences; friction, opposing pressure, compressibility and flow limits are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"hydraulic-power","name":"Hydraulic fluid & shaft power","description":"Convert pressure difference and volume flow into fluid power and input power.","url":"https://toolmoz.com/tools/hydraulic-power/","category":"engineering","method":"Fluid power is ΔP×Q, so kW=bar×L/min÷600. Input shaft power=fluid power/efficiency; their difference is the inferred loss. Uses a steady, incompressible flow and a supplied overall efficiency from >0–100%. This is an energy balance, not a prediction of pump performance or electric motor current.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pump-affinity-laws","name":"Pump affinity scaling","description":"Scale flow, head and power with rotational speed under ideal similarity assumptions.","url":"https://toolmoz.com/tools/pump-affinity-laws/","category":"engineering","method":"For the same impeller and fluid under similar operating conditions, Q scales with speed, head with speed squared and power with speed cubed. Outputs retain each supplied quantity’s unit. Assumes unchanged efficiency and dynamically similar operation; it does not determine the new system operating point, cavitation margin or actual motor requirement.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pipe-flow-velocity","name":"Pipe mean flow velocity","description":"Find mean liquid speed from circular bore diameter and volume flow.","url":"https://toolmoz.com/tools/pipe-flow-velocity/","category":"home","method":"Uses the full internal circular area πD²/4 and mean velocity=Q/A. Converts millimetres and litres/minute to SI internally. Assumes a completely filled pipe; velocity is the section average rather than the centreline peak. Does not infer pressure loss, roughness or partial-depth flow.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"reynolds-number","name":"Pipe Reynolds number","description":"Calculate Reynolds number with explicit density and dynamic viscosity.","url":"https://toolmoz.com/tools/reynolds-number/","category":"engineering","method":"Uses Re=ρVD/μ, converting diameter to metres and dynamic viscosity to Pa·s. Classifies circular-pipe flow using conservative bounds below 2,000 and above 4,000, with a transitional interval between them. The physical transition depends on disturbances, geometry and conditions; these labels are not universal thresholds for all external or open-channel flows.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"darcy-pipe-pressure-drop","name":"Darcy pipe friction loss","description":"Estimate straight-pipe pressure loss using a flow-regime-aware Darcy factor.","url":"https://toolmoz.com/tools/darcy-pipe-pressure-drop/","category":"home","method":"Calculates velocity and Reynolds number, then uses f=64/Re below Re 2,000 and the Swamee–Jain approximation above Re 4,000. Transitional values are rejected rather than interpolated. Relative roughness is bounded to 0.05. Darcy–Weisbach head loss=f(L/D)V²/(2g); pressure loss=ρg×head. Fully filled steady circular pipe only; fittings, elevation and fluid property variation are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"US EPA: pipe head-loss models and flow regimes","url":"https://github.com/USEPA/EPANET2.2/blob/master/User_Manual/docs/3_network_model.rst"}]},{"slug":"pipe-minor-loss","name":"Pipe fitting minor-loss table","description":"Combine fitting loss coefficients on one velocity basis.","url":"https://toolmoz.com/tools/pipe-minor-loss/","category":"home","method":"Adds K×count across up to 200 components, then computes head loss=ΣK·V²/(2g) and pressure loss=ρΣK·V²/2. Counts are non-negative whole numbers. Every coefficient must use the same supplied reference velocity; this does not translate coefficients across changing pipe sizes or infer coefficients from a fitting name.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"orifice-discharge","name":"Liquid orifice discharge","description":"Estimate discharge from head, circular opening size and a supplied coefficient.","url":"https://toolmoz.com/tools/orifice-discharge/","category":"garden","method":"Uses Q=Cd·A·sqrt(2gh) for an incompressible liquid discharging from a large reservoir at a supplied constant head. Area is the geometric opening area; Cd is provided by you and is not inferred from edge shape. Downstream pressure, approach velocity, unsteady tank levels and gas compressibility are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"venturi-flow","name":"Venturi liquid flow estimate","description":"Calculate volume flow from upstream/throat diameters and differential pressure.","url":"https://toolmoz.com/tools/venturi-flow/","category":"engineering","method":"Uses Q=Cd·A₂·sqrt(2ΔP/[ρ(1−β⁴)]), β=D₂/D₁, for steady incompressible flow at equal elevation. Throat diameter must be smaller than upstream diameter. The supplied coefficient accounts approximately for non-ideal flow. No gas expansion correction, installation standard, pressure-tap specification or uncertainty is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"tank-drain-time","name":"Gravity tank drain curve","description":"Plot liquid head and outflow as a constant-area tank drains.","url":"https://toolmoz.com/tools/tank-drain-time/","category":"garden","method":"Integrates the Torricelli discharge model for a tank with constant horizontal cross-section: time=2Atank(√h₀−√h₁)/(Cd Aout√(2g)). Final head is no greater than initial head. Assumes a small outlet, constant coefficient, atmospheric pressure at free surface and discharge, and unrestricted venting. Exports 101 head/flow samples; head is measured above the outlet.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"manning-open-channel","name":"Manning open-channel flow","description":"Estimate uniform flow in a rectangular or trapezoidal channel.","url":"https://toolmoz.com/tools/manning-open-channel/","category":"outdoors","method":"In SI, Q=(1/n)·A·R^(2/3)·sqrt(S), where A=(b+zy)y and wetted perimeter=b+2y√(1+z²), so R=A/P. Zero side slope gives a rectangle. Uses the supplied roughness and energy slope under steady uniform open-channel assumptions. Does not infer backwater profiles, critical depth, freeboard or flood capacity.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"froude-number","name":"Open-channel Froude number","description":"Compare flow speed with the shallow-water gravity-wave scale.","url":"https://toolmoz.com/tools/froude-number/","category":"outdoors","method":"Uses Fr=V/sqrt(gD), with hydraulic depth D equal to flow area divided by free-surface top width. Reports subcritical below 1, supercritical above 1 and critical within 10⁻⁸ of 1. Hydraulic depth is not generally hydraulic radius or maximum depth. This is a one-dimensional gravity-flow descriptor, not a hydraulic-jump or flood model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bernoulli-head","name":"Bernoulli mechanical head","description":"Separate pressure, velocity and elevation contributions to fluid head.","url":"https://toolmoz.com/tools/bernoulli-head/","category":"engineering","method":"Head=P/(ρg)+V²/(2g)+z, using gauge pressure and your elevation datum consistently. Reports each contribution in metres of the supplied fluid. Assumes incompressible flow with kinetic-energy correction factor one. No pump input, turbine extraction or friction loss is included; compare locations only when those energy terms are appropriately accounted for.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"hydrostatic-rectangle-force","name":"Hydrostatic force on a vertical rectangle","description":"Find the resultant gauge force and centre-of-pressure depth.","url":"https://toolmoz.com/tools/hydrostatic-rectangle-force/","category":"engineering","method":"For a fully submerged vertical rectangle in a constant-density liquid, resultant gauge force=ρg A hcentroid. Centre-of-pressure depth=hcentroid+h²/(12hcentroid). Top-edge depth is non-negative. Assumes still liquid, a horizontal free surface and equal ambient pressure on the reference side; atmospheric pressure, inclined panels and support reactions are not included.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"aerodynamic-drag-force","name":"Aerodynamic drag & power","description":"Calculate drag and steady power from a supplied drag coefficient and area.","url":"https://toolmoz.com/tools/aerodynamic-drag-force/","category":"transport","method":"Uses dynamic pressure q=ρV²/2, drag=q Cd A and steady drag power=drag×V. The reference area must match the coefficient definition. Cd is supplied, not inferred from shape, Reynolds number or Mach number. Assumes a steady relative flow; rolling resistance, lift effects, acceleration and drivetrain losses are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"stokes-terminal-velocity","name":"Stokes settling velocity","description":"Estimate a small sphere’s settling speed and inspect the resulting Reynolds number.","url":"https://toolmoz.com/tools/stokes-terminal-velocity/","category":"science","method":"Balances Stokes drag against buoyancy-corrected weight: V=2r²g(ρparticle−ρfluid)/(9μ). Positive means settling downward; lower-density particles rise. Computes particle Re from the estimated speed and flags when it is not well below one. Assumes an isolated rigid sphere in creeping Newtonian flow; non-spherical, interacting or turbulent settling is unsupported.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: fluid flow and viscosity","url":"https://openstax.org/books/university-physics-volume-1/pages/14-7-viscosity-and-turbulence"}]},{"slug":"rocket-equation","name":"Ideal rocket delta-v","description":"Relate mass ratio and specific impulse to ideal velocity change.","url":"https://toolmoz.com/tools/rocket-equation/","category":"science","method":"Uses Δv=Isp·g₀·ln(m₀/mf), with standard gravity 9.80665 m/s² and final mass no greater than initial mass. Reports effective exhaust speed and propellant fraction. Assumes constant effective exhaust performance and a single ideal burn; gravity, drag, steering, finite-burn and staging losses are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NASA Glenn: ideal rocket equation","url":"https://www1.grc.nasa.gov/beginners-guide-to-aeronautics/ideal-rocket-equation/"}]},{"slug":"circular-orbit","name":"Ideal circular orbit","description":"Calculate circular speed, period and local escape speed around a supplied central mass.","url":"https://toolmoz.com/tools/circular-orbit/","category":"science","method":"Uses a two-body point-mass gravitational model with G≈6.67430×10⁻¹¹ SI. Circular speed=√(GM/r), period=2π√(r³/GM), and local escape speed=√(2GM/r). Radius is from the centre, not altitude above a surface. The orbiting mass is neglected. Body size, atmosphere, oblateness, relativity and other bodies are not checked.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"hohmann-transfer","name":"Coplanar Hohmann transfer","description":"Compare ideal tangential impulses and coast time between two circular orbits.","url":"https://toolmoz.com/tools/hohmann-transfer/","category":"science","method":"Uses a half-ellipse with semimajor axis (r₁+r₂)/2 and two instantaneous coplanar tangential burns. Signed impulses indicate prograde/retrograde changes; total delta-v adds their magnitudes. Coast time is half the transfer-ellipse period. Equal radii give zero burn and zero transfer time. Ignores plane changes, finite burns, atmosphere, rendezvous phasing and multi-body effects.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"free-space-path-loss","name":"Free-space radio path loss","description":"Calculate ideal geometric radio loss from frequency and separation.","url":"https://toolmoz.com/tools/free-space-path-loss/","category":"engineering","method":"Uses FSPL=20log10(4πd/λ), λ=c/f with c exactly 299,792,458 m/s. Reports wavelength too. This is a free-space far-field geometric loss, not a terrain or indoor propagation prediction. Antenna gains, cable loss, polarisation, obstructions, multipath, near-field coupling and receiver sensitivity must be considered separately.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fresnel-zone-radius","name":"Fresnel zone clearance","description":"Find a radio Fresnel-zone radius at a point along a path.","url":"https://toolmoz.com/tools/fresnel-zone-radius/","category":"engineering","method":"Uses rₙ=√(nλd₁d₂/(d₁+d₂)), with distances converted to metres. Returns the geometric zone radius and your requested fraction of it. Clearance percentage is an input, not an assurance of link performance. Does not include terrain height, Earth curvature, atmospheric refraction, diffraction loss or antenna pattern.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"skin-depth","name":"Conductor skin depth","description":"Estimate field decay depth in a uniform good conductor.","url":"https://toolmoz.com/tools/skin-depth/","category":"engineering","method":"Uses δ=√(2/[ω μ₀ μr σ]) for a homogeneous good conductor, with μ₀ approximated as 4π×10⁻⁷ H/m. Field amplitude decays as exp(−depth/δ), so the 1% depth is ln(100)δ. Assumes frequency-independent real conductivity/permeability and neglects displacement current, surface roughness and magnetic dispersion.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"wire-resistance-temperature","name":"Wire resistance & temperature","description":"Calculate conductor resistance and apply a supplied linear temperature coefficient.","url":"https://toolmoz.com/tools/wire-resistance-temperature/","category":"engineering","method":"Reference resistance=ρL/A; temperature-adjusted resistance=Rref[1+α(T−Tref)]. Length must include the complete current path you intend to model. Resistivity and alpha are supplied example material properties, not certified values for a named grade. Rejects a negative extrapolated resistance. Excludes contact resistance, AC skin effects and self-heating.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"battery-runtime","name":"Battery energy runtime","description":"Estimate constant-load runtime after supplied usable-depth and efficiency factors.","url":"https://toolmoz.com/tools/battery-runtime/","category":"home","method":"Delivered usable energy=nominal Wh×usable depth×efficiency. Runtime=delivered energy/load. Assumes a constant load and supplied overall usable fraction; does not infer capacity from chemistry or predict ageing, temperature effects, high-current losses, voltage cutoff or changing loads. Results are an energy-budget estimate rather than a discharge-curve simulation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"battery-bank-planner","name":"Battery series/parallel arithmetic","description":"Compare nominal pack voltage, capacity, energy and cell current sharing.","url":"https://toolmoz.com/tools/battery-bank-planner/","category":"home","method":"For identical balanced cells, series multiplies voltage and parallel multiplies ampere-hour capacity. Total nominal Wh is Ns×Np×Vcell×Ahcell. Assumes equal current sharing across parallel cells and reports per-cell C-rate. This is nominal connection arithmetic; it does not infer charge limits, protection, current ratings, balancing or physical pack construction.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"solar-energy-estimator","name":"Solar array energy budget","description":"Estimate energy from array rating, equivalent peak-sun hours and supplied derating.","url":"https://toolmoz.com/tools/solar-energy-estimator/","category":"home","method":"Estimated kWh/day=total rated watts×equivalent peak-sun hours×derating/1000. Multiplies by the supplied number of identical-condition days. Peak-sun hours represent integrated irradiance, not daylight duration. No weather/location API is used; orientation, shading, temperature, inverter/storage losses and seasonality must be represented in your assumptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"layered-wall-heat-flow","name":"Layered wall heat flow","description":"Combine material and surface-film resistances and inspect interface temperatures.","url":"https://toolmoz.com/tools/layered-wall-heat-flow/","category":"home","method":"Adds 1/hinside, each layer thickness/conductivity and 1/houtside as area-normalised resistances. Heat flux=(Tinside−Toutside)/Rtotal; interface temperatures step down by flux×resistance in supplied layer order. Supports 1–100 uniform layers. Assumes one-dimensional steady conduction and constant properties; thermal bridges, moisture, radiation exchange details, cavities and condensation are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: heat transfer models","url":"https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer"}]},{"slug":"greybody-radiation","name":"Greybody radiative heat exchange","description":"Compare emitted power and net exchange with a large surrounding environment.","url":"https://toolmoz.com/tools/greybody-radiation/","category":"science","method":"Converts temperatures to kelvin and uses εσAT⁴ for emission and εσA(Tsurface⁴−Tsurroundings⁴) for net radiative loss, with σ≈5.670374419×10⁻⁸ SI. Negative net power means radiative gain. Assumes a diffuse grey surface facing a large isothermal enclosure with effective view factor one. Conduction, convection, spectral variation and finite-enclosure geometry are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: heat transfer models","url":"https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer"}]},{"slug":"newton-cooling-time","name":"Newton cooling & heating curve","description":"Estimate time to a target temperature using a supplied first-order rate constant.","url":"https://toolmoz.com/tools/newton-cooling-time/","category":"cooking","method":"Uses T(t)=Tambient+(Tinitial−Tambient)exp(−kt). A target equal to the initial temperature takes zero time; other finite-time targets must lie strictly between initial and ambient temperatures. The ambient value is approached asymptotically. Assumes a well-mixed/lumped body and constant rate parameter; no food-safety, phase-change, changing-ambient or spatial temperature prediction is made.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: heat transfer models","url":"https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer"}]},{"slug":"convex-hull","name":"Convex hull builder","description":"Find and plot the outer boundary of a point cloud.","url":"https://toolmoz.com/tools/convex-hull/","category":"math","method":"Uses Andrew’s monotone-chain hull after sorting and removing exact duplicate coordinates. Supports 2–1,000 points within ±1 billion. Collinear interior points are omitted; a collinear cloud returns its two extreme endpoints and zero area. Exported vertices are counter-clockwise for a non-degenerate hull, with implicit closure. A coordinate plot accompanies the table; floating-point orientation tests can be sensitive for nearly collinear points.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"closest-pair-points","name":"Closest pair in a point cloud","description":"Find the nearest two points and show their distance on a plot.","url":"https://toolmoz.com/tools/closest-pair-points/","category":"math","method":"Examines all unordered pairs of 2–1,000 two-dimensional points using Euclidean distance. Exact duplicate positions give zero distance. Ties retain the first encountered pair in original input order; the output uses source CSV row numbers. Coordinates share one unit, so the resulting distance has that unit. Uses O(n²) comparisons with a stated input cap.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polygon-centroid","name":"Polygon centroid calculator","description":"Locate the uniform-area centre of a simple polygon and plot it.","url":"https://toolmoz.com/tools/polygon-centroid/","category":"math","method":"Uses signed shoelace cross-products on translated coordinates to obtain the uniform-area centroid, area and boundary perimeter. Accepts 3–500 ordered vertices and an optional repeated closing point. Rejects duplicate vertices, self-crossing/touching non-adjacent edges and numerically degenerate polygons. This is an area centroid, rather than the arithmetic mean of vertex positions; holes and non-uniform density are unsupported.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"point-in-polygon","name":"Point-in-polygon checker","description":"Test whether a point lies inside, outside or on the edge of a polygon.","url":"https://toolmoz.com/tools/point-in-polygon/","category":"math","method":"Validates a simple 3–500-vertex polygon, then applies the even–odd crossing rule. Boundary points are reported separately using a distance tolerance of 10⁻¹⁰ × max(1, largest absolute coordinate). Coordinates must share one Cartesian system; no geographic projection is inferred. Near-boundary results depend on the tolerance. Includes a coordinate plot of the polygon and query.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"segment-intersection","name":"Line segment intersection","description":"Find a crossing point or collinear overlap between two finite segments.","url":"https://toolmoz.com/tools/segment-intersection/","category":"math","method":"Checks finite segments AB and CD, including point-like degenerate segments, endpoint contact and collinear overlap. Returns zero, one point, or the two endpoints of an overlapping segment. Uses length-relative geometric tolerances around 10⁻¹⁰ and clamps tiny endpoint overshoots. The segments are not extended as infinite lines. Inputs use a common Cartesian unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"circle-intersections","name":"Circle intersection points","description":"Find the intersection coordinates of two circles and view their geometry.","url":"https://toolmoz.com/tools/circle-intersections/","category":"math","method":"Uses centre separation, the radical-axis foot and perpendicular offsets. Returns zero, one tangent point, or two crossing points. Concentric unequal circles have no crossing; coincident circles are rejected as infinitely many intersections. Radii must be positive and use the coordinate unit. A relative tolerance of about 10⁻¹⁰ distinguishes tangency and coincidence; very near-degenerate geometry is approximate.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"line-circle-intersections","name":"Infinite line & circle intersections","description":"Find where the line through two points crosses a circle.","url":"https://toolmoz.com/tools/line-circle-intersections/","category":"math","method":"Normalises the direction from A to B, projects the circle centre onto the infinite line, then offsets along the line by the remaining radius. A and B must be distinct. Returns zero, one tangent point or two crossings, without restricting them to segment AB. Positive radius and common Cartesian units are required; near tangency uses a scale-relative floating-point tolerance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"triangle-centres","name":"Triangle centres from coordinates","description":"Plot the centroid, incentre, circumcentre, orthocentre and nine-point centre.","url":"https://toolmoz.com/tools/triangle-centres/","category":"math","method":"Requires exactly three non-collinear two-dimensional vertices. Uses side-length barycentric weights for the incentre, perpendicular-bisector equations for the circumcentre, the vector identity H=A+B+C−2O for the orthocentre, and (O+H)/2 for the nine-point centre. Reports area, inradius and circumradius. Degenerate or extremely narrow triangles are rejected at a scale-relative tolerance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"transform-points-2d","name":"2D point transformation","description":"Scale, rotate and translate a point set with a comparison plot and CSV export.","url":"https://toolmoz.com/tools/transform-points-2d/","category":"design","method":"For 2–1,000 points, subtracts the pivot, applies independent X/Y scales, rotates counter-clockwise, restores the pivot, then adds translation. Negative scales reflect axes and zero scales collapse a dimension. Export includes original and transformed coordinates. This is Cartesian geometry; screen Y-down coordinate systems reverse the visual rotation convention. Coordinates and translation use the same unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bezier-curve-sampler","name":"Bézier curve sampler","description":"Turn control points into an exportable curve and inspect the control polygon.","url":"https://toolmoz.com/tools/bezier-curve-sampler/","category":"design","method":"Uses de Casteljau interpolation for 2–20 control points and samples t uniformly from 0 to 1. The curve passes through its first and last control points; interior controls generally shape rather than lie on the curve. High-degree curves and uniform-parameter samples may have uneven point spacing; this is not equal-arc-length sampling. Exports t,X,Y with a coordinate plot.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"complex-number-calculator","name":"Complex number arithmetic","description":"Add, subtract, multiply or divide complex numbers and inspect polar form.","url":"https://toolmoz.com/tools/complex-number-calculator/","category":"math","method":"Interprets each pair as real + i·imaginary, using standard complex arithmetic. Reports real and imaginary parts, Euclidean modulus and principal argument in degrees from atan2. Zero has no defined argument, and division by zero is rejected. Values use floating-point arithmetic; no symbolic simplification or branch-dependent logarithms are attempted.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"complex-roots","name":"Nth roots of a complex number","description":"List and plot all distinct nth roots of a complex value.","url":"https://toolmoz.com/tools/complex-roots/","category":"math","method":"Writes z=r·exp(iθ), then forms r^(1/n)·exp(i(θ+2πk)/n) for k=0,…,n−1. Accepts integer n from 1–64. For nonzero z, roots are equally spaced around a circle; angles in the table follow the generated sequence rather than principal-value wrapping. Zero returns one distinct root with multiplicity n. Trigonometric rounding can leave tiny components near zero.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polar-cartesian-converter","name":"2D polar & Cartesian converter","description":"Convert planar coordinates while keeping angle and zero-radius conventions explicit.","url":"https://toolmoz.com/tools/polar-cartesian-converter/","category":"conversion","method":"Cartesian output uses X=r cos θ and Y=r sin θ. Polar output uses r=hypot(X,Y) and the principal atan2 angle in [−180°,180°]. Angles are counter-clockwise from positive X; zero radius has no defined direction. Only fields belonging to the selected input form affect the calculation. This converts planar coordinates, without geographic or 3D conventions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"barycentric-coordinates","name":"Triangle barycentric coordinates","description":"Express a point as weights of three triangle vertices and check containment.","url":"https://toolmoz.com/tools/barycentric-coordinates/","category":"math","method":"Solves planar area-ratio coordinates so P=αA+βB+γC and α+β+γ=1. Requires exactly three non-collinear vertices. Weights in [0,1] indicate an interior/boundary point; negative weights indicate extrapolation outside the triangle, with a 10⁻¹⁰ classification allowance. Coordinates use one Cartesian system. The weights are affine coordinates, not probabilities or confidence values.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"point-plane-distance","name":"Point-to-plane distance","description":"Find signed distance and the closest point on a 3D plane.","url":"https://toolmoz.com/tools/point-plane-distance/","category":"math","method":"Uses the plane equation nx·X+ny·Y+nz·Z+d=0. Signed distance is (n·P+d)/|n|; subtracting that distance along the unit normal gives the orthogonal foot. Reports absolute distance too. The normal must be nonzero; scaling all plane coefficients preserves the plane and flips signed distance only when the scale is negative. Coordinates share one Euclidean unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"plane-through-three-points","name":"Plane through three 3D points","description":"Find a unit-normal plane equation from three non-collinear coordinates.","url":"https://toolmoz.com/tools/plane-through-three-points/","category":"math","method":"Uses n=(B−A)×(C−A), normalises n, then sets d=−n·A for n·X+d=0. Requires exactly three finite points within ±1 million and rejects collinear/near-collinear configurations at a relative 10⁻¹² threshold. Reversing point order reverses all equation coefficients without changing the plane. No best-fit plane is inferred from more points.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"line-plane-intersection","name":"3D line & plane intersection","description":"Intersect an infinite directed line with a plane or identify parallel cases.","url":"https://toolmoz.com/tools/line-plane-intersection/","category":"math","method":"Normalises the nonzero line direction and plane normal, then solves P+tV against n·X+d=0. Returns the unique point and signed travel in the unit direction. Parallel lines are distinguished from lines lying in the plane using stated small numeric tolerances. The line is infinite; negative travel is allowed and is not treated as a ray intersection.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"planes-intersection","name":"Intersection of two planes","description":"Find a point and unit direction for the line where two 3D planes meet.","url":"https://toolmoz.com/tools/planes-intersection/","category":"math","method":"Normalises both plane equations n·X+d=0. Their cross product gives line direction; cross-product identities give a point orthogonal to that direction. Parallel equations are classified as coincident or distinct using tolerances around 10⁻¹² for normal cross-products and 10⁻¹⁰ for offsets. Near-parallel planes can have distant, sensitive intersections. Direction sign is arbitrary.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"euler-rotation","name":"3D Euler rotation workspace","description":"Apply an explicit X–Y–Z rotation order and inspect the resulting matrix.","url":"https://toolmoz.com/tools/euler-rotation/","category":"math","method":"Applies active right-handed rotations to a column vector in a fixed Cartesian frame: X first, then Y, then Z. The combined matrix is Rz·Ry·Rx, which differs from other Euler conventions or intrinsic-axis sequences. Angles are degrees. Exports the rotated vector and the three matrix rows. The origin is fixed; translation and camera/projection conventions are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"quaternion-rotation","name":"Quaternion vector rotation","description":"Normalise a Hamilton quaternion and use it to rotate a 3D vector.","url":"https://toolmoz.com/tools/quaternion-rotation/","category":"math","method":"Treats quaternion components in [w,x,y,z] Hamilton order and normalises the quaternion before applying active right-handed rotation q·[0,v]·conjugate(q). Zero quaternion is rejected. q and −q represent the same rotation. Reports the normalised quaternion and rotated coordinates; vector length is preserved within floating-point rounding. Component ordering and handedness may differ in other software.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polynomial-evaluator","name":"Polynomial evaluator","description":"Evaluate a coefficient list and its derivative using Horner arithmetic.","url":"https://toolmoz.com/tools/polynomial-evaluator/","category":"math","method":"Treats coefficients as descending powers, including the constant term. Horner evaluation reduces intermediate multiplications. Also differentiates the coefficient list and evaluates that polynomial at the same X. At most degree 20, coefficients within ±1 trillion and X within ±1 million. Uses floating-point arithmetic and rejects non-finite intermediate values.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polynomial-arithmetic","name":"Polynomial arithmetic","description":"Add, subtract or multiply polynomial coefficient lists and export the resulting coefficients.","url":"https://toolmoz.com/tools/polynomial-arithmetic/","category":"math","method":"Aligns coefficients by power for sums and differences and uses coefficient convolution for products. Each input has degree at most 20, so a product may have degree 40. Leading exact zeros are removed; internal zero coefficients remain. Arithmetic is approximate floating point, not symbolic rational simplification.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polynomial-division","name":"Polynomial long division","description":"Divide two polynomial coefficient lists and inspect quotient and remainder.","url":"https://toolmoz.com/tools/polynomial-division/","category":"math","method":"Polynomial long division cancels descending leading terms. The divisor must not be the zero polynomial. Returns quotient and a remainder of lower degree than the divisor; if the dividend has lower degree the quotient is zero. At most degree 20 per input. Tiny floating-point remainders are retained rather than claimed to be exact algebraic factors.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"numerical-integration","name":"Adaptive numerical integration","description":"Estimate a definite integral with an evaluation count and error estimate.","url":"https://toolmoz.com/tools/numerical-integration/","category":"math","method":"Adaptive Simpson subdivision compares one panel with two half-panels and applies a delta/15 correction. Recursion is limited to depth 20 and 20,000 function evaluations. Reversed bounds negate the estimate; equal bounds return zero. Requires finite values and a sufficiently smooth integrand; an estimated error is not a guarantee for singular, discontinuous or highly oscillatory functions.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST DLMF: numerical quadrature","url":"https://dlmf.nist.gov/3.5"}]},{"slug":"numerical-differentiation","name":"Numerical derivative workspace","description":"Estimate first and second derivatives and compare sensitivity to the chosen step.","url":"https://toolmoz.com/tools/numerical-differentiation/","category":"math","method":"Uses five-point central finite differences at X−2h, X−h, X, X+h and X+2h. Repeats the first-derivative calculation at h/2 and reports the absolute change as a sensitivity diagnostic. Requires finite function values. Very small steps amplify rounding; large steps introduce truncation error. The sensitivity value is not a certified error bound.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bracketed-root-finder","name":"Bracketed root finder","description":"Find one root in a sign-changing interval and inspect the final residual.","url":"https://toolmoz.com/tools/bracketed-root-finder/","category":"math","method":"Bisects an interval with strictly ordered bounds whose finite endpoint values have opposite signs, accepting an exact endpoint root. Stops at the requested width plus a floating-point relative allowance, up to 200 iterations. Rejects a narrow interval with a large residual as a possible discontinuity. Requires continuity; it finds one bracketed root, not all roots or even-multiplicity roots without a sign change.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"SciPy: requirements and stopping rules for bisection","url":"https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.bisect.html"}]},{"slug":"function-value-table","name":"Function value table","description":"Sample an expression at evenly spaced X positions and export the full table.","url":"https://toolmoz.com/tools/function-value-table/","category":"math","method":"Evaluates a restricted expression at N evenly spaced positions including both supplied endpoints. Reversed or equal ranges are allowed and retain their requested order. Every sampled value must be finite; undefined positions cause a clear error. Samples do not prove continuity or capture every narrow feature. Exports plain numeric X and f(X) values as CSV.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"finite-difference-table","name":"Finite difference table","description":"Build successive forward differences from equally spaced observations.","url":"https://toolmoz.com/tools/finite-difference-table/","category":"math","method":"Successive columns subtract each observation from the next until one difference remains. Positions refer to the original ordered values. Supports up to 50 observations within ±1 trillion, preserving the triangular blank cells. Assumes uniform spacing; differences are not divided by a physical step and are not analytic derivatives.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polynomial-interpolation","name":"Polynomial interpolation workspace","description":"Interpolate up to 20 points and export a sampled polynomial curve.","url":"https://toolmoz.com/tools/polynomial-interpolation/","category":"math","method":"Uses barycentric Lagrange interpolation after centring and scaling X to improve numerical behaviour. Supports 2–20 distinct, adequately separated X values; sorts points by X. First output row is the query, followed by 101 samples over the input range. High-degree interpolation and extrapolation can oscillate or be poorly conditioned; this does not perform regression or infer uncertainty.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"natural-cubic-spline","name":"Natural cubic spline workspace","description":"Interpolate an ordered point set with natural endpoint conditions and export samples.","url":"https://toolmoz.com/tools/natural-cubic-spline/","category":"math","method":"Sorts 2–500 points by X, requiring separations greater than 10⁻¹⁰. Solves the natural cubic spline tridiagonal system with zero second derivatives at both endpoints. The spline passes through supplied points; it is not a smoothing fit and does not extrapolate. First output row is the query, followed by 101 evenly spaced curve samples.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"matrix-row-reduction","name":"Row reduction, rank & nullspace","description":"Reduce a small matrix and inspect pivot columns, numerical rank and nullspace basis.","url":"https://toolmoz.com/tools/matrix-row-reduction/","category":"math","method":"Gauss–Jordan elimination uses partial row pivoting and a scale-aware numerical pivot threshold. Reports RREF, pivot columns, numerical rank and a basis for homogeneous solutions. Nullspace basis vectors appear as rows in the exported table. Up to 6 × 6; threshold is 10⁻¹⁰ × max(1, largest absolute entry) × max(rows, columns). Near-dependent data may be classified differently at another tolerance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"matrix-eigenvalues-2x2","name":"2 × 2 eigenvalue calculator","description":"Find real or complex-conjugate eigenvalues of a real 2 × 2 matrix.","url":"https://toolmoz.com/tools/matrix-eigenvalues-2x2/","category":"math","method":"Solves the characteristic quadratic using matrix trace and determinant. Negative discriminants return conjugate complex values; repeated eigenvalues are repeated in the result. Uses floating-point arithmetic and does not compute eigenvectors or infer diagonalizability. For widely separated eigenvalues, subtraction can lose relative accuracy in the smaller root.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cholesky-decomposition","name":"Cholesky decomposition","description":"Factor a small symmetric positive-definite matrix as L times its transpose.","url":"https://toolmoz.com/tools/cholesky-decomposition/","category":"math","method":"Computes a lower-triangular Cholesky factor for square matrices up to 6 × 6. Rejects asymmetry or non-positive pivots at tolerance 10⁻¹² × max(1, largest absolute input entry). The exported factor satisfies A≈L Lᵀ within floating-point error. Positive-semidefinite or near-singular inputs are not accepted; no automatic regularisation is applied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"lu-decomposition","name":"Pivoted LU decomposition","description":"Inspect lower and upper triangular factors and the row permutation.","url":"https://toolmoz.com/tools/lu-decomposition/","category":"math","method":"Uses Gaussian elimination with partial pivoting, returning L, U and the permuted source-row order for P A=L U. L has a unit diagonal. Supports square matrices up to 6 × 6 and rejects pivots at or below 10⁻¹² × max(1, largest absolute input entry). Factors are numeric approximations and are not symbolic exact decompositions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"qr-decomposition","name":"QR decomposition","description":"Factor a small matrix into an orthonormal basis and upper-triangular coefficients.","url":"https://toolmoz.com/tools/qr-decomposition/","category":"math","method":"Computes economy QR using modified Gram–Schmidt with a second orthogonalisation pass. Requires rows≥columns and numerically independent columns; up to 6 × 6. Returns Q and R with A≈QR and QᵀQ≈I. Rejects column norms at or below 10⁻¹² × max(1, largest absolute input entry); no column pivoting is performed.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"SciPy: QR factorisation","url":"https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.qr.html"}]},{"slug":"polynomial-least-squares","name":"Polynomial least-squares fit","description":"Fit a low-degree curve to point data and inspect fitted values and residuals.","url":"https://toolmoz.com/tools/polynomial-least-squares/","category":"math","method":"Fits 1st–5th degree polynomials to 2–500 observations using reorthogonalised QR, requiring more observations than degree and independent design columns. X is centred/scaled to t=(X−centre)/scale; coefficients are reported in ascending powers of t. Exports fitted values and residuals, with residual sum of squares in the note. No confidence intervals, weighting or predictive validity is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"SciPy: QR factorisation","url":"https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.qr.html"}]},{"slug":"iterative-linear-system","name":"Iterative linear-system solver","description":"Trace Jacobi or Gauss–Seidel iterations and inspect residual convergence.","url":"https://toolmoz.com/tools/iterative-linear-system/","category":"math","method":"Starts from the zero vector and applies the chosen iteration without reordering rows. Diagonal entries must be non-zero at scale. Stops when max|Ax−b| meets the target or after 1–1,000 iterations; non-convergence is explicitly reported. Displays the first 100 iterates and states the final solution/residual. Convergence is not guaranteed; a small residual does not bound error for ill-conditioned matrices.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"chinese-remainder-calculator","name":"Chinese remainder solver","description":"Solve compatible integer congruences, including non-coprime moduli.","url":"https://toolmoz.com/tools/chinese-remainder-calculator/","category":"math","method":"Combines up to 20 congruences using the extended Euclidean algorithm with exact BigInt arithmetic. Each modulus must be positive, and shared-factor congruences must be compatible. Returns the smallest non-negative solution and the combined least-common-multiple modulus. Input integers have at most 80 digits; the final modulus is bounded to 500 digits.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"modular-inverse","name":"Modular multiplicative inverse","description":"Find an exact integer inverse and verify the modular product.","url":"https://toolmoz.com/tools/modular-inverse/","category":"math","method":"Uses the extended Euclidean algorithm on a modulo positive m. An inverse exists only when gcd(a,m)=1. Returns the representative in [0,m) and verifies (a×inverse) mod m=1. Negative a is supported. Inputs are integer text of at most 80 digits, so large values do not pass through floating-point numbers.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"continued-fraction","name":"Continued fractions & convergents","description":"Inspect rational convergents of a supplied decimal number.","url":"https://toolmoz.com/tools/continued-fraction/","category":"math","method":"Repeatedly takes the floor and reciprocal fractional part, building exact BigInt numerators and denominators for each convergent. Supports negative values using floor-based coefficients. Stops at a fractional remainder below 10⁻¹⁴ or 30 terms and rejects coefficients outside the safe integer range. The source is a floating-point decimal; late convergents may describe rounding rather than a symbolic irrational.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-heatmap","name":"CSV heatmap builder","description":"Explore a numeric matrix as a labelled heatmap, with readable values and SVG export.","url":"https://toolmoz.com/tools/csv-heatmap/","category":"data","method":"First column contains unique row labels; remaining columns contain finite plain decimal numbers or blanks. Supports 1–40 rows, 1–30 numeric columns, labels up to 120 characters and values within ±1 trillion. Sequential colours span the observed minimum and maximum; an all-equal matrix uses the midpoint. Diverging colours use equal absolute magnitudes around zero. Blank cells are grey and marked with a dash. Every cell includes its value, and an accessible table and original-value CSV accompany the SVG. Colours are a visual aid and do not change or normalise the values.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"box-plot-builder","name":"Box plot builder","description":"Compare grouped distributions, medians, spread and outliers from your own CSV.","url":"https://toolmoz.com/tools/box-plot-builder/","category":"statistics","method":"Requires exact Group,Value headings, 1–10,000 rows and at most 10 groups. Blank numeric cells are skipped and counted; other malformed numbers are rejected. Group labels use at most 120 characters. Quartiles use linear interpolation at index (n−1)p (R type 7); whiskers are the smallest and largest observed values within inclusive Q1−1.5 IQR and Q3+1.5 IQR fences. Outliers are marked, with at most 200 markers per group; the summary counts all outliers. Single observations and constant groups remain visible. Plots are descriptive and do not establish significance or cause. Export SVG plus a summary CSV.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: box plots and interquartile fences","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/boxplot.htm"}]},{"slug":"decision-matrix-builder","name":"Weighted decision matrix","description":"Compare options using your own criteria, directions and weights, with an exportable ranking.","url":"https://toolmoz.com/tools/decision-matrix-builder/","category":"planning","method":"Use Option followed by 1–20 numeric criteria, with 1–50 uniquely named options. Supply exactly one non-negative weight and min/max direction for each criterion; at least one weight must be positive. Min-max normalises each criterion across the supplied options to 0–1, reverses lower-is-better criteria, and combines scores using weights divided by their total. A criterion identical across all options gives each a normalised value of 1. Ties within 0.0000000001 score points share competition rank. Scores are relative to this option set: adding an option can change the ranking. Weights and assumptions are yours; this is a comparison aid rather than an objective recommendation. Export SVG and the full scoring table.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"venn-diagram-builder","name":"Venn diagram builder","description":"Compare two or three lists, see exact overlaps and export the diagram and memberships.","url":"https://toolmoz.com/tools/venn-diagram-builder/","category":"math","method":"Splits each list into lines, trims surrounding whitespace, ignores blank lines and removes duplicates within each set. Comparison is case-sensitive and preserves item text. Up to 1,000 lines per set, 200 characters per item and 200,000 characters per list. Each diagram region counts items in exactly that combination of sets; items in all sets are counted only in the central intersection. Circle sizes and overlap areas are fixed and are not proportional to counts. The accessible region table explains each count; the CSV lists every unique item and its set memberships. Export self-contained SVG.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-chart-builder","name":"CSV chart builder","description":"Turn a local CSV into a bar, line or scatter chart with editable columns and SVG export.","url":"https://toolmoz.com/tools/csv-chart-builder/","category":"data","method":"Parses a local UTF-8 comma-separated CSV. Bar and line charts group identical non-empty labels in first-seen order and use the chosen sum, mean or count; at most 100 groups. Scatter plots use two finite decimal numeric columns, preserve row order and allow up to 2,000 points. Blank numeric cells are skipped and counted; malformed numbers are rejected. Up to 10,000 input rows. Charts use linear axes, include zero for bars and can be downloaded as self-contained SVG with a CSV of plotted values. Line charts connect first-seen categories, without inferring dates or sorting.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"wav-trimmer","name":"WAV waveform & trimmer","description":"Inspect a waveform, choose a region, preview it and download a trimmed WAV locally.","url":"https://toolmoz.com/tools/wav-trimmer/","category":"music","method":"Reads little-endian RIFF/WAVE PCM 8/16/24/32-bit or IEEE float32, mono or stereo, at 8–192 kHz. Up to 25 MB, 300 seconds and 12 million channel samples. Compressed WAV, extensible/RF64 and multichannel files are unsupported. Selection endpoints snap to source sample boundaries. Optional peak normalisation targets −1 dBFS before applying fades; linear edge fades are limited to half the selection. Exports interleaved 16-bit PCM WAV at the original rate and channel count, without metadata or dither. Out-of-range samples are clipped for export and counted. No audio is uploaded or played automatically.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"WAVE format specification and sample representations","url":"https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html"}]},{"slug":"zip-inspector","name":"ZIP archive inspector","description":"Browse a ZIP, search its files and extract individual entries without uploading the archive.","url":"https://toolmoz.com/tools/zip-inspector/","category":"files","method":"Reads the ZIP32 central directory before extraction: up to 25 MB input, 500 entries and 100 MB declared total uncompressed size. Individual extraction is limited to 25 MB, performed in a worker with an actual-output cap and CRC-32/size checks. Supports stored and deflated files with UTF-8/ASCII names. ZIP64, split archives, encryption, symlinks and unsafe absolute/traversal paths are not extracted. Files are downloaded individually using a safe basename; archive contents are never executed or automatically opened. The manifest can be exported as CSV. Nested archives are treated as ordinary files.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"PKWARE ZIP format specification","url":"https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT"}]},{"slug":"image-comparison","name":"Image comparison slider","description":"Slide between two images or inspect a highlighted pixel-difference map.","url":"https://toolmoz.com/tools/image-comparison/","category":"images","method":"Accepts two PNG, JPEG or WebP files up to 10 MB and 16 million pixels each; source dimensions must match. Builds a preview no larger than 1,600 × 1,200 pixels, compositing transparency on white. The slider compares these decoded previews. Difference view marks pixels whose largest absolute RGB-channel difference exceeds the threshold; statistics also refer to the scaled preview, not all original pixels. RGB differences are display-code differences, not a perceptual colour metric. Exports the current preview as PNG. Browser decoding may apply orientation and colour management; animation and metadata are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-palette-extractor","name":"Image colour palette extractor","description":"Extract a sampled palette, inspect colour contrast and download reusable swatches.","url":"https://toolmoz.com/tools/image-palette-extractor/","category":"design","method":"Samples a browser-decoded PNG/JPEG/WebP (up to 10 MB and 16 million pixels) on a 64 × 64 canvas. Fully transparent pixels are ignored; other transparency is composited on white. Deterministic, frequency-weighted RGB k-means uses farthest-point initial centres and up to 30 iterations. Duplicate rounded colours are merged; fewer distinct colours can be returned. Shares refer to sampled pixels, not exact full-resolution areas. The contrast matrix uses WCAG relative luminance; AA normal-text markers use the unrounded 4.5:1 threshold. Exports SVG swatches and CSS variables. This is an RGB approximation, not perceptual clustering or print-colour matching.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"W3C: contrast minimum and relative luminance","url":"https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html"}]},{"slug":"function-plotter","name":"Interactive function plotter","description":"Graph up to three expressions, zoom the viewport and inspect values along the X axis.","url":"https://toolmoz.com/tools/function-plotter/","category":"math","method":"Uses a restricted mathematical parser, without eval or executable JavaScript. Supports x, pi, e, + − * / ^, parentheses and sin/cos/tan/asin/acos/atan/sqrt/abs/exp/ln/log/floor/ceil/round; min, max and pow take two arguments. Trigonometric angles are radians, log is base 10, and multiplication must be explicit. Each curve is sampled at 4,001 X positions; undefined/non-finite values are omitted, with heuristics to break visible discontinuities. Sampling can miss narrow features and cannot prove continuity, roots or intersections. Axis bounds are explicit; zoom changes both ranges. Download the graph as SVG.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gantt-chart-builder","name":"Project timeline & Gantt chart","description":"Turn dated tasks into an editable timeline with progress bars and SVG export.","url":"https://toolmoz.com/tools/gantt-chart-builder/","category":"planning","method":"CSV requires Task, Start, End and Progress headings. Accepts up to 100 tasks; dates are strict YYYY-MM-DD and end dates are inclusive. Progress is a supplied percentage from 0–100, not inferred from today. Uses calendar days, without dependencies, automatic scheduling, holiday rules or resource levelling. Overall span is limited to 1,830 days and detailed chart width to 12,000 pixels. Task order is preserved; long labels are shortened visually and retained in the accessible table. Exports self-contained SVG and a safe CSV of the tasks.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"room-layout-planner","name":"Room layout planner","description":"Arrange furniture rectangles on a measured room plan, with snapping, keyboard controls and SVG export.","url":"https://toolmoz.com/tools/room-layout-planner/","category":"home","method":"A top-down rectangular-room sketch using metres. X runs right and Y runs down from the upper-left inner corner. Up to 30 axis-aligned furniture rectangles must fit within the room. Dragging and nudge controls snap to 0.1 m and stay in bounds; typed values allow finer placement. Rotate swaps width and depth at the same origin if it fits. Reports interior overlaps but does not infer doors, walls, clearances, accessibility or construction suitability. Up to 30 layout edits can be undone within the page. Exports a labelled SVG and coordinate CSV; nothing is saved by Toolmoz.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pendulum-simulator","name":"Interactive pendulum simulation","description":"Change a pendulum’s length, gravity and damping, then watch its motion and angle trace.","url":"https://toolmoz.com/tools/pendulum-simulator/","category":"science","method":"Numerically integrates θ″=−(g/L)sin(θ)−bθ′ using fourth-order Runge–Kutta with a fixed 1/240 s step, starting at rest. It is an ideal point mass on a massless rigid link, with a supplied linear angular-damping coefficient and no driving force. The displayed small-angle period 2π√(L/g) is an approximation, especially at large amplitudes. Energy is per unit mass, gL(1−cosθ)+½L²θ′². Animation starts only on request, pauses when the tab is hidden and respects reduced-motion preferences; manual steps remain available. The trace shows the latest 20 simulated seconds; CSV retains the latest 10,000 samples at 20 Hz.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: pendulum equation and small-angle period","url":"https://openstax.org/books/university-physics-volume-1/pages/15-4-pendulums"}]},{"slug":"voltage-divider","name":"Loaded voltage divider","description":"Calculate a resistor divider with an optional load across its lower resistor.","url":"https://toolmoz.com/tools/voltage-divider/","category":"science","method":"The lower effective resistance is R₂, or R₂R_L/(R₂+R_L) with a resistive output load. Vout = Vin × lower/(R₁+lower). Reports branch currents and resistor dissipation using ideal DC resistors. Input voltage is the total applied voltage; source resistance, tolerances, temperature coefficients and ratings are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"current-divider","name":"Two-branch current divider","description":"Split a supplied total current between two ideal parallel resistors.","url":"https://toolmoz.com/tools/current-divider/","category":"science","method":"For two ideal parallel resistors, I₁ = I_total × R₂/(R₁+R₂) and I₂ = I_total × R₁/(R₁+R₂). The common voltage follows from the parallel resistance. Signed current preserves the chosen direction; dissipation uses I²R. No source compliance or component rating is evaluated.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"led-series-resistor","name":"LED series resistor calculator","description":"Estimate the ideal resistor and dissipation for a low-voltage DC LED string.","url":"https://toolmoz.com/tools/led-series-resistor/","category":"science","method":"Uses the supplied forward-voltage estimate at your target current: R = (Vsupply − count × Vf)/I. Requires positive resistor voltage headroom. Reports ideal resistance, resistor dissipation and total LED electrical power. Does not choose a commercial resistor value, rating, thermal margin, tolerance, current-regulated driver or mains circuit.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"rc-filter","name":"First-order RC filter","description":"Find the ideal cutoff, gain and phase of an unloaded RC low-pass or high-pass filter.","url":"https://toolmoz.com/tools/rc-filter/","category":"science","method":"For an ideal unloaded RC circuit, τ = RC and fc = 1/(2πRC). With x=2πfRC, low-pass gain = 1/√(1+x²), phase = −atan(x); high-pass gain = x/√(1+x²), phase = atan(1/x). Frequency is positive. Source/load impedance, component tolerances and parasitics are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"rl-time-constant","name":"RL current rise calculator","description":"Explore an ideal series RL step response and stored magnetic energy.","url":"https://toolmoz.com/tools/rl-time-constant/","category":"science","method":"For a series RL circuit initially carrying zero current, τ=L/R and I(t)=(V/R)(1−e^(−t/τ)). Uses expm1 for small elapsed times. Reports final current, instantaneous current, inductor voltage and stored energy ½LI². R includes all idealised series resistance. No saturation, parasitics or component ratings are predicted.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"lc-resonance","name":"LC resonance calculator","description":"Calculate an ideal LC resonant frequency and the series-RLC quality factor.","url":"https://toolmoz.com/tools/lc-resonance/","category":"science","method":"Resonant angular frequency ω₀=1/√(LC), f₀=ω₀/(2π). For the stated series loss R, Q=ω₀L/R and half-power bandwidth R/(2πL). These are ideal lumped series-RLC relationships; capacitor/inductor parasitics, loading and frequency-dependent losses are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: AC resonance and quality factor","url":"https://openstax.org/books/university-physics-volume-2/pages/15-5-resonance-in-an-ac-circuit"}]},{"slug":"reactance-calculator","name":"Capacitive & inductive reactance","description":"Find ideal reactance magnitudes and signed imaginary impedance at a frequency.","url":"https://toolmoz.com/tools/reactance-calculator/","category":"science","method":"For positive frequency, inductive reactance is X_L=2πfL and capacitive magnitude is X_C=1/(2πfC). Under the e^(jωt) convention the corresponding imaginary impedances are +jX_L and −jX_C. Reports the individual elements without assuming a connection or a DC model.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: series RLC circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/15-3-rlc-series-circuits-with-ac"}]},{"slug":"series-rlc-impedance","name":"Series RLC impedance","description":"Calculate impedance, RMS current, phase and real power for an ideal series RLC circuit.","url":"https://toolmoz.com/tools/series-rlc-impedance/","category":"science","method":"Uses Z=R+j(ωL−1/(ωC)), |Z|=√(R²+X²) and RMS current=Vrms/|Z|. Reports impedance angle, current phase relative to applied voltage, power factor R/|Z| and real power I²R. Assumes a sinusoidal steady state and positive series resistance; no component ratings or real losses beyond R are included.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: series RLC circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/15-3-rlc-series-circuits-with-ac"}]},{"slug":"waveform-rms","name":"Waveform RMS & peak","description":"Compare peak, peak-to-peak and RMS for ideal symmetric periodic waveforms.","url":"https://toolmoz.com/tools/waveform-rms/","category":"science","method":"For ideal zero-mean AC waveforms, RMS/peak is 1/√2 for sine, 1 for symmetric square, and 1/√3 for triangle or linear sawtooth. Total RMS with DC offset is √(AC_RMS²+offset²). Peak-to-peak is twice AC peak; extrema are offset ± peak. Duty cycle is 50% for the square wave. This does not generalise to arbitrary measured waveforms.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: series RLC circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/15-3-rlc-series-circuits-with-ac"}]},{"slug":"ideal-transformer","name":"Ideal transformer ratios","description":"Relate winding turns, RMS voltages, currents and reflected resistance.","url":"https://toolmoz.com/tools/ideal-transformer/","category":"science","method":"For an ideal transformer, Vs/Vp=Ns/Np, Is=Vs/Rload and Ip=Is×Ns/Np. The load reflected into the primary is Rload×(Np/Ns)². Ideal input/output real powers match for this resistive load. RMS sinusoidal values are magnitudes; winding phase, losses, magnetising current, frequency limits, insulation and ratings are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: transformers","url":"https://openstax.org/books/university-physics-volume-2/pages/15-6-transformers"}]},{"slug":"op-amp-gain","name":"Ideal op-amp gain","description":"Compare ideal inverting and non-inverting closed-loop amplifier results.","url":"https://toolmoz.com/tools/op-amp-gain/","category":"science","method":"Ideal non-inverting gain = 1+Rf/Rg; ideal inverting gain = −Rf/Rin. Output = gain × input, relative to the same zero reference. Reports signed gain, magnitude in dB and ideal output. Assumes stable negative feedback; supply rails, output headroom, gain-bandwidth, input range and slew rate are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Texas Instruments: ideal amplifier feedback gain","url":"https://www.ti.com/document-viewer/lit/html/SSZT348"}]},{"slug":"555-astable","name":"555 astable timer calculator","description":"Estimate standard 555 timing, frequency and high-state duty cycle.","url":"https://toolmoz.com/tools/555-astable/","category":"science","method":"For the standard two-resistor astable connection without bypass diodes, tHIGH≈ln(2)(RA+RB)C and tLOW≈ln(2)RB C. Frequency is 1/(tHIGH+tLOW); high duty cycle is (RA+RB)/(RA+2RB), always above 50% for positive RA. These are ideal threshold estimates; actual device, supply, leakage, tolerances and permitted component ranges require the selected datasheet.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Texas Instruments: xx555 astable equations","url":"https://www.ti.com/lit/ds/symlink/ne555.pdf"}]},{"slug":"capacitor-charge-sharing","name":"Capacitor charge sharing","description":"Calculate the ideal final voltage when two charged capacitors are connected in parallel.","url":"https://toolmoz.com/tools/capacitor-charge-sharing/","category":"science","method":"Uses conserved signed charge: Vfinal=(C₁V₁+C₂V₂)/(C₁+C₂), with consistently labelled plate polarity. Reports initial/final stored energies and the energy difference dissipated or radiated during equalisation. The ideal final-state model does not predict peak current, transient ringing, polarity suitability, ESR or ratings.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"resistor-colour-code","name":"Resistor colour code reader","description":"Decode four- or five-band resistor values and tolerance limits.","url":"https://toolmoz.com/tools/resistor-colour-code/","category":"science","method":"Reads the leading two or three digits, multiplies by the selected decimal factor, then applies the tolerance symmetrically. The first band cannot be black. Four- and five-band value/tolerance codes are supported; zero-ohm links, missing tolerance bands, six-band temperature coefficients, manufacturer exceptions and SMD markings are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Vishay: resistor colour code chart","url":"https://www.vishay.com/docs/49411/resistor_color_code_calculator.pdf"}]},{"slug":"resistor-tolerance-check","name":"Resistor tolerance checker","description":"Compare a set of measured resistances against a nominal value and tolerance.","url":"https://toolmoz.com/tools/resistor-tolerance-check/","category":"science","method":"Lower/upper limits = nominal × (1 ∓ tolerance/100). Checks up to 10,000 non-negative resistance readings against inclusive boundaries and reports signed deviation. Uses a relative floating-point boundary tolerance of eight machine epsilons. Instrument uncertainty, calibration, temperature and specification-specific acceptance rules are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: electric circuits","url":"https://openstax.org/books/university-physics-volume-2/pages/10-introduction"}]},{"slug":"molality-calculator","name":"Molality calculator","description":"Calculate solute moles per kilogram of solvent, keeping solvent and solution mass separate.","url":"https://toolmoz.com/tools/molality-calculator/","category":"science","method":"Molality m = solute moles ÷ kilograms of solvent, where solute moles = solute mass ÷ molar mass. Solvent mass excludes the solute. Also reports total mass and solute mass percentage. Unlike molarity, molality does not use final solution volume. No dissociation, reaction, solubility or material identity is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: concentration and colligative properties","url":"https://openstax.org/books/chemistry/pages/11-4-colligative-properties"}]},{"slug":"osmotic-pressure","name":"Ideal osmotic pressure","description":"Estimate dilute-solution osmotic pressure from concentration and a particle factor.","url":"https://toolmoz.com/tools/osmotic-pressure/","category":"science","method":"Uses π=iMRT for an ideal dilute solution, converting M from mol/L to mol/m³ and using R=8.31446261815324 J/(mol·K). Reports pascals, kPa, bar and standard atmospheres. The supplied particle factor is not inferred from a chemical formula. Activities, membrane selectivity and concentrated-solution effects are excluded. This is a chemistry model, without clinical interpretation.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: concentration and colligative properties","url":"https://openstax.org/books/chemistry/pages/11-4-colligative-properties"}]},{"slug":"serial-dilution","name":"Serial dilution planner","description":"Build a concentration table for equal-volume repeated dilution steps.","url":"https://toolmoz.com/tools/serial-dilution/","category":"science","method":"Each fresh tube receives the stated transferred stock/previous-tube volume and fresh diluent. Per-step fraction = transfer/(transfer+diluent); concentration after step n = initial × fractionⁿ. Reports each prepared volume, the volume left after transfer to the next tube and dilution relative to stock. Last tube has no onward transfer. Assumes complete mixing, solute-free diluent, sufficient starting stock and no reaction or volume contraction.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"solution-blending","name":"Solution concentration by blending","description":"Mix two solutions of the same solute using mass percentages.","url":"https://toolmoz.com/tools/solution-blending/","category":"science","method":"Solute mass = solution mass × mass fraction for each input. Adds masses and divides combined solute by total solution mass to obtain the blend’s mass percentage. Assumes the same solute definition, no reaction or loss and additive mass; it does not assume additive liquid volumes or infer density.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ph-poh","name":"pH, pOH & concentration","description":"Relate pH, pOH and idealised hydronium/hydroxide concentrations using a stated pKw.","url":"https://toolmoz.com/tools/ph-poh/","category":"science","method":"Uses pH≈−log₁₀[H₃O⁺], pOH=pKw−pH, [H₃O⁺]≈10⁻pH and [OH⁻]≈10⁻pOH. Concentrations are approximations to activities. The common pKw=14 applies approximately at 25 °C for dilute aqueous conditions; enter the appropriate value yourself. Does not restrict all solutions to pH 0–14 or infer temperature, chemical composition or clinical meaning.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: pH, pOH and water equilibrium","url":"https://openstax.org/books/chemistry/pages/14-key-equations"}]},{"slug":"buffer-ph","name":"Weak acid buffer pH","description":"Explore the Henderson–Hasselbalch model with a stated conjugate pair.","url":"https://toolmoz.com/tools/buffer-ph/","category":"science","method":"For a suitable weak acid/conjugate base pair, pH≈pKa+log₁₀([base]/[acid]). Both concentrations refer to the same final solution. Reports their ratio and combined analytical concentration. This approximation assumes appropriate equilibrium conditions and neglects activity corrections; it does not infer a chemical pair, buffer capacity, reaction with added acid/base or biological interpretation.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: Henderson–Hasselbalch equation","url":"https://openstax.org/books/chemistry/pages/14-6-buffers"}]},{"slug":"colligative-temperature","name":"Boiling & freezing point shifts","description":"Estimate ideal boiling-point elevation and freezing-point depression from molality.","url":"https://toolmoz.com/tools/colligative-temperature/","category":"science","method":"Uses ΔTb=iKb m and ΔTf=iKf m for an ideal dilute solution with a non-volatile solute. Adds the boiling shift and subtracts the freezing shift from the supplied pure-solvent values. Defaults illustrate water at approximately 1 atm; constants and pressure conditions are your inputs. Dissociation, association and non-ideal behaviour are not inferred. Results below absolute zero are rejected.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: concentration and colligative properties","url":"https://openstax.org/books/chemistry/pages/11-4-colligative-properties"}]},{"slug":"arrhenius-rate-ratio","name":"Arrhenius rate ratio","description":"Compare rate constants at two absolute temperatures using an activation energy.","url":"https://toolmoz.com/tools/arrhenius-rate-ratio/","category":"science","method":"Assuming unchanged pre-exponential factor and activation energy, ln(k₂/k₁)=−Ea/R × (1/T₂−1/T₁). Converts kJ/mol to J/mol and uses R=8.31446261815324 J/(mol·K). Reports the logarithmic ratio even when the ordinary ratio exceeds floating-point range. This compares rate constants, not complete reaction time, conversion or a changed mechanism.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: Arrhenius equation","url":"https://openstax.org/books/chemistry/pages/12-5-collision-theory"}]},{"slug":"ideal-gas-density","name":"Ideal gas density calculator","description":"Calculate mass density from absolute pressure, temperature and molar mass.","url":"https://toolmoz.com/tools/ideal-gas-density/","category":"science","method":"Rearranges PV=nRT and mass=n×molar mass to give ρ=PM/(RT). Converts kPa to Pa and g/mol to kg/mol, using R=8.31446261815324 J/(mol·K). Reports kg/m³, numerically equal g/L, and ideal molar volume. Pressure must be absolute. The model excludes real-gas compressibility, humidity and composition changes.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: ideal gas density and molar mass","url":"https://openstax.org/books/chemistry-atoms-first/pages/8-3-stoichiometry-of-gaseous-substances-mixtures-and-reactions"}]},{"slug":"reaction-yield","name":"Reaction percentage yield","description":"Compare actual product yield with a supplied theoretical yield.","url":"https://toolmoz.com/tools/reaction-yield/","category":"science","method":"Percentage yield = actual/theoretical × 100. Both yields must describe the same product and use the same unit and basis. Also reports the signed shortfall. A value over 100% is retained and flagged as an apparent excess; the tool does not correct measurement, purity or a theoretical-yield calculation. No balanced reaction or limiting reagent is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: reaction yields","url":"https://openstax.org/books/chemistry-2e/pages/4-4-reaction-yields"}]},{"slug":"vector-calculator","name":"3D vector calculator","description":"Calculate lengths, dot and cross products, angle and vector projection.","url":"https://toolmoz.com/tools/vector-calculator/","category":"math","method":"Uses Cartesian Euclidean vectors in three dimensions; set z=0 for a plane. Dot product is Σaᵢbᵢ, cross product uses right-handed coordinates, and angle = acos(dot/(|a||b|)). Projection of A onto B is B×dot(A,B)/|B|². Zero-vector unit directions, angles or projections are reported as undefined where needed. Components share one unit; products have its square.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"matrix-calculator","name":"Small matrix calculator","description":"Add, multiply, transpose, invert or find a determinant for matrices up to 6 × 6.","url":"https://toolmoz.com/tools/matrix-calculator/","category":"math","method":"Accepts rectangular matrices up to 6 × 6 with finite entries of magnitude at most 10¹², and non-zero entries of at least 10⁻¹². Addition/subtraction require matching shapes; multiplication requires A columns=B rows. Determinants use elimination with partial pivoting; inverses use pivoted Gauss–Jordan elimination. Exact zero pivots are singular in this numeric model. Inverse output includes an infinity-norm condition estimate and warns above 10¹²; arithmetic and displayed values are floating-point approximations.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"triangle-sas-asa","name":"Triangle from sides & angles","description":"Solve a plane triangle from two sides and their included angle, or one side and two angles.","url":"https://toolmoz.com/tools/triangle-sas-asa/","category":"math","method":"SAS uses the cosine law in a cancellation-resistant half-angle form; remaining angles use atan2. The two-angle mode sets C=180°−A−B and uses the sine law with known side a. Reports sides, angles, area, perimeter and in/circumradii. Requires a non-degenerate Euclidean triangle; extremely disproportionate dimensions beyond reliable floating-point angular resolution are rejected. All sides use one unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"circle-three-points","name":"Circle through three points","description":"Find the circumcentre, radius and equation of the circle through three plane points.","url":"https://toolmoz.com/tools/circle-three-points/","category":"math","method":"Translates coordinates relative to A, solves the two perpendicular-bisector equations and returns the centre and radius. Repeated, collinear or numerically near-collinear points do not define a reliable finite circle here. Rejects when the cross-product magnitude is at most 10⁻¹² times the two displacement lengths’ product. Uses one consistent Cartesian length unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cartesian-spherical","name":"Cartesian & spherical coordinates","description":"Translate 3D Cartesian coordinates and radius/azimuth/polar-angle coordinates.","url":"https://toolmoz.com/tools/cartesian-spherical/","category":"math","method":"Uses x=r sin(θ) cos(φ), y=r sin(θ) sin(φ), z=r cos(θ), with θ the polar angle from +z and φ the azimuth from +x toward +y. Returns azimuth in [0°,360°) and polar angle in [0°,180°]. Reports the horizontal/cylindrical radius too. At the origin both angles are undefined; on the z-axis azimuth is undefined. All Cartesian lengths and radii share one unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-range-generator","name":"Date range generator","description":"Create a dated list at fixed day intervals, with weekday or weekend filtering.","url":"https://toolmoz.com/tools/date-range-generator/","category":"dates","method":"Generates start, start+step days and so on through an inclusive end date, then applies the weekday filter. The interval is anchored to the start; filtering does not move it. Maximum 10,000 candidate dates. Gregorian date arithmetic is performed at UTC midnight without time-zone changes.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"recurring-date-planner","name":"Recurring date planner","description":"Generate anchored weekly, monthly or yearly dates with a clear month-end policy.","url":"https://toolmoz.com/tools/recurring-date-planner/","category":"dates","method":"Each slot is calculated from the original date, preventing drift after a short month. Monthly/yearly dates either clamp to the month’s last day or omit the slot. The slot count includes omitted slots. Daily and weekly repetitions use fixed calendar days. Outputs are limited to years 0001–9999; no holiday or time-zone adjustment is made.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"nth-weekday","name":"Nth weekday of a month","description":"Find the first to fifth, or last, chosen weekday in a month.","url":"https://toolmoz.com/tools/nth-weekday/","category":"dates","method":"Finds the selected weekday within the supplied Gregorian month. A fifth occurrence can be absent; the tool reports that rather than rolling into the next month. This identifies a weekday pattern, not a public holiday.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"business-day-offset","name":"Add or subtract working days","description":"Move a date using your chosen weekdays and excluded-date list.","url":"https://toolmoz.com/tools/business-day-offset/","category":"dates","method":"Counts eligible dates strictly after the starting date when adding, or strictly before it when subtracting. Zero returns the supplied start even if it is excluded. Weekday numbers run Monday=1 to Sunday=7; duplicate excluded dates are ignored. At most 100,000 working days and 1,000,000 calendar steps are supported. No jurisdiction-specific holiday rules are added.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"work-calendar-hours","name":"Work calendar hours","description":"Summarise eligible dates and assumed working hours by month.","url":"https://toolmoz.com/tools/work-calendar-hours/","category":"dates","method":"Includes both date endpoints, counts only your selected weekdays and removes your explicit excluded dates. Multiplies every eligible date by the same hours-per-day input and reports monthly totals. Maximum span 36,600 calendar days. This is a workload scenario without shifts, leave rules, time zones or country calendars.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fiscal-period","name":"Fiscal year & quarter","description":"Find the year and quarter boundaries for a fiscal year starting in a chosen month.","url":"https://toolmoz.com/tools/fiscal-period/","category":"dates","method":"The fiscal year starts on day 1 of your chosen month and consists of four consecutive three-calendar-month quarters. Labels both starting and ending calendar years explicitly. Reports inclusive boundaries and day position. Does not apply 4-4-5 retail calendars or infer an organisation’s naming convention.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-range-overlap","name":"Date range overlap","description":"Find shared days, combined coverage and the gap between two inclusive date ranges.","url":"https://toolmoz.com/tools/date-range-overlap/","category":"dates","method":"Treats both ranges as inclusive whole Gregorian dates. Overlap is max(0, min(ends) − max(starts) + 1 day). Union coverage is the two lengths minus overlap. Gap counts dates strictly between disjoint ranges, so adjacent ranges have zero gap. No clock times or holidays are involved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"merge-date-ranges","name":"Merge date ranges","description":"Combine overlapping inclusive date ranges without double-counting covered days.","url":"https://toolmoz.com/tools/merge-date-ranges/","category":"dates","method":"Sorts up to 10,000 inclusive date ranges and merges overlaps. Optionally merges ranges ending immediately before the next range starts. Reports merged boundaries, each inclusive day count and total distinct coverage. Requires exact Start,End headings and valid ordered dates. Your input order is not retained.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"shift-date-list","name":"Shift a list of dates","description":"Move dates by days or calendar months while preserving their input order.","url":"https://toolmoz.com/tools/shift-date-list/","category":"dates","method":"Shifts each of up to 10,000 dates independently. Calendar months keep the source day where it exists; otherwise the selected clamp/reject policy applies. Day shifts use fixed calendar dates. Retains duplicates and input order, adds the day-of-week label, and rejects dates outside years 0001–9999.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-format-converter","name":"Date format converter","description":"Translate explicitly ordered numeric dates into unambiguous formats.","url":"https://toolmoz.com/tools/date-format-converter/","category":"dates","method":"Accepts numeric components separated consistently by /, - or ., using the input order you select. Requires a four-digit year and validates the Gregorian date without rollover. Reports ISO, DMY, MDY, English long date, ordinal day and ISO week date. Never guesses an ambiguous day/month order.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"clock-time-offset","name":"Add duration to a clock time","description":"Add or subtract seconds and keep track of midnight crossings.","url":"https://toolmoz.com/tools/clock-time-offset/","category":"dates","method":"Parses a 24-hour starting clock with hours 00–23 and minutes/seconds 00–59. Adds a signed whole-second duration, reports a normalised HH:MM:SS and signed day carry using floor division. This is fixed 24-hour arithmetic without dates, leap seconds, time zones or daylight-saving rules.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"merge-clock-intervals","name":"Merge clock-time intervals","description":"Calculate distinct occupied time from overlapping same-day intervals.","url":"https://toolmoz.com/tools/merge-clock-intervals/","category":"dates","method":"Treats up to 10,000 intervals as half-open [start,end) within one 24-hour clock day. End may be 24:00; start must be before 24:00 and end after start. Sorts and merges overlapping or touching intervals and reports total distinct minutes. Overnight spans must be split at midnight. No date, zone, break or payroll policy is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-time-elapsed","name":"Elapsed time between dated instants","description":"Compare two ISO date-times with explicit UTC offsets.","url":"https://toolmoz.com/tools/date-time-elapsed/","category":"dates","method":"Validates full Gregorian date-times with whole seconds and an explicit Z or numeric UTC offset no greater than ±14:00. Converts to UTC before subtracting, allowing signed results and differing offsets. Every duration day is 86,400 seconds. The numeric offset is supplied by you; geographic daylight-saving rules and leap seconds are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"anniversary-planner","name":"Annual date planner","description":"List the next occurrence of recurring month/day dates after a chosen reference date.","url":"https://toolmoz.com/tools/anniversary-planner/","category":"dates","method":"For each of up to 1,000 named month/day events, finds its next occurrence on or after the reference date. Validates recurring dates against leap year 2000, then applies your February 29 policy. Sorts by next occurrence, retaining input order for ties. Dates outside years 0001–9999 are rejected. Does not infer birth years, ages or local observance rules.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"iso-week-date","name":"ISO week date to calendar date","description":"Turn a week-year, ISO week and weekday into a Gregorian calendar date.","url":"https://toolmoz.com/tools/iso-week-date/","category":"dates","method":"ISO weeks start Monday, and week 1 contains January 4 (the first Thursday). Week-year can differ from calendar year near New Year. Locates the requested date and verifies the resulting week-year/week to reject nonexistent week 53. Results must remain in years 0001–9999.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"TC39 Temporal: ISO week calendar algorithms","url":"https://tc39.es/proposal-temporal/"}]},{"slug":"julian-date","name":"Julian date converter","description":"Translate UTC calendar date-times and astronomical Julian dates.","url":"https://toolmoz.com/tools/julian-date/","category":"dates","method":"Uses JD = Unix milliseconds/86,400,000 + 2,440,587.5, with noon as the integer-day boundary. Modified Julian Date = JD − 2,400,000.5. Dates use the proleptic Gregorian calendar and UTC labels with fixed 86,400-second days; no historical calendar switch, leap-second, UT1 or TT correction is applied. Reverse output rounds to the nearest millisecond.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"US Naval Observatory: Julian date conventions","url":"https://aa.usno.navy.mil/downloads/c15_usb_online.pdf"}]},{"slug":"excel-date-serial","name":"Excel date serial converter","description":"Translate date-times and spreadsheet serials while exposing the 1900 leap-day anomaly.","url":"https://toolmoz.com/tools/excel-date-serial/","category":"dates","method":"Uses spreadsheet wall-clock arithmetic, with the fractional part representing a 24-hour day. In the 1900 system, 1900-01-01 is 1 and the fictitious serial day 60 is rejected; in 1904, 1904-01-01 is 0. The 1900 system supports actual dates from 1900-01-01 onward, while the 1904 system supports dates from 1904-01-01. Reverse output rounds to milliseconds. No time zone or spreadsheet locale is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Microsoft: Excel date systems","url":"https://support.microsoft.com/en-us/excel/date-systems-in-excel"}]},{"slug":"iso-duration","name":"ISO day-time duration converter","description":"Convert a fixed ISO-style day/time duration to seconds and back.","url":"https://toolmoz.com/tools/iso-duration/","category":"dates","method":"Supports an optional leading minus sign, whole days/hours/minutes and seconds with up to three decimal places, such as -P1DT2H or PT0.125S. Standalone whole weeks (P2W) are also accepted. Years and calendar months are excluded because their elapsed lengths vary. Uses fixed 24-hour days; seconds input rounds to milliseconds. This is a bounded duration subset, not a parser for every ISO 8601 representation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"calendar-event-ics","name":"Calendar event file creator","description":"Create a downloadable .ics file for one all-day or UTC-timed event.","url":"https://toolmoz.com/tools/calendar-event-ics/","category":"dates","method":"Builds one RFC 5545 VEVENT with a fresh random UID and a UTC generation timestamp. Timed inputs must be explicit UTC; all-day inputs use DATE values and export the day after the inclusive last date as the non-inclusive DTEND. Escapes text delimiters and line breaks and folds UTF-8 content lines at 75 octets. Downloading creates a file only; it does not contact a calendar service, send invitations or add an event to an account.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"IETF RFC 5545: iCalendar format","url":"https://www.rfc-editor.org/rfc/rfc5545"}]},{"slug":"clock-format-converter","name":"12-hour & 24-hour time converter","description":"Translate explicitly written AM/PM times and 24-hour clock times.","url":"https://toolmoz.com/tools/clock-format-converter/","category":"dates","method":"12-hour input requires hours 1–12 and AM/PM; 12 AM is midnight and 12 PM is noon. 24-hour input uses hours 00–23. Minutes are required and seconds optional; each must be 00–59. Reports both clock formats without applying a date, location or time zone.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"curtain-fabric","name":"Curtain fabric planner","description":"Estimate joined fabric widths, repeat-matched drops and total fabric length.","url":"https://toolmoz.com/tools/curtain-fabric/","category":"crafts","method":"Each curtain needs track width × fullness ÷ curtain count in finished flat width. Joined full widths lose two seam allowances per join and the two outer side allowances. Finds the fewest whole widths per curtain. Each drop includes top/bottom allowances and rounds up to a whole vertical repeat. All drops start at the same pattern phase. Excludes horizontal motif alignment, lining, heading-specific extra fabric and roll-end waste.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fabric-shrinkage","name":"Fabric shrinkage calculator","description":"Measure shrinkage in each direction and allow for it before cutting.","url":"https://toolmoz.com/tools/fabric-shrinkage/","category":"crafts","method":"Length retention = after ÷ before, independently for each direction. Shrinkage is (1 − retention) × 100; negative shrinkage means growth. Required prewash size = finished size ÷ retention. Assumes the tested washing, drying and fabric behaviour scale uniformly; add sewing allowances separately.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"knitting-gauge","name":"Knitting & crochet gauge planner","description":"Turn a measured swatch into stitch and row counts, including repeat multiples.","url":"https://toolmoz.com/tools/knitting-gauge/","category":"crafts","method":"Calculates stitches and rows per cm from your measured swatch. Selects the nearest non-negative whole repeat count, then adds edge stitches; exact half-repeat ties round up. Rows round to the nearest whole row. Reports the actual resulting dimensions. Gauge should be measured in the intended stitch after the intended finishing/blocking. This is a rectangular panel calculation, without shaping.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Craft Yarn Council: gauge and pattern basics","url":"https://craftyarncouncil.com/read_instructions.html"}]},{"slug":"quilt-binding","name":"Quilt binding calculator","description":"Plan straight-grain binding strips and fabric yardage from a quilt perimeter.","url":"https://toolmoz.com/tools/quilt-binding/","category":"crafts","method":"Required binding is 2(length + width) plus your extra allowance. Joined length from n strips is n × usable fabric width − (n−1) × join loss. Rounds strip count up and multiplies by cut strip width to obtain fabric length. A zero join loss treats joining as part of your extra allowance. Uses straight-grain strips; bias binding is a separate layout problem.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Utah State University Extension: binding a quilt","url":"https://extension.usu.edu/sewing/research/binding-a-quilt"}]},{"slug":"bias-binding-area","name":"Bias binding fabric area","description":"Estimate the fabric area behind a chosen length and cut width of bias strip.","url":"https://toolmoz.com/tools/bias-binding-area/","category":"crafts","method":"Net strip area = length × cut width. Adds your percentage allowance to that area and gives the side length of an equal-area square. This is an area estimate, not a cutting diagram or guarantee of continuous strip length; diagonal offcuts, joins, selvages and the chosen construction method can require more fabric.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"yarn-substitution","name":"Yarn quantity substitution","description":"Match a pattern’s total yarn length to a replacement skein size.","url":"https://toolmoz.com/tools/yarn-substitution/","category":"crafts","method":"Pattern length = original ball count × labelled length per ball. Adds your allowance and rounds up to whole replacement skeins. Reports supplied length, spare length and purchased mass. Matching length does not establish matching gauge, fabric, fibre behaviour or suitability; use a finished swatch.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Craft Yarn Council: gauge and pattern basics","url":"https://craftyarncouncil.com/read_instructions.html"}]},{"slug":"bead-string-planner","name":"Bead string length planner","description":"Fit whole beads and spacers into a target necklace or bracelet length.","url":"https://toolmoz.com/tools/bead-string-planner/","category":"crafts","method":"For n beads, occupied string length is n × bead length + (n−1) × spacer length, plus the clasp/end allowance. Finds the largest whole bead count that does not exceed your target, with zero beads if none fit. Bead dimensions are measured along the hole/string. This is straight length arithmetic; curved fit, knots and stretch need separate allowance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"circle-skirt","name":"Circle skirt dimensions","description":"Calculate waist and hem radii for full, half and quarter circle skirt sectors.","url":"https://toolmoz.com/tools/circle-skirt/","category":"crafts","method":"For circle fraction f, the waist arc is 2πrf, so waist radius = (waist + ease)/(2πf). Adds skirt length and hem allowance for the outer cut radius. Reports the finished hem arc. These are ideal sector dimensions; seam, waistband, fastening and waist-edge seam allowances are excluded. No fabric nesting or grain/stretch prediction is made.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"even-spacing","name":"Evenly spaced objects","description":"Lay out identical objects with equal edge gaps or fixed end clearances.","url":"https://toolmoz.com/tools/even-spacing/","category":"home","method":"Subtracts object widths from the available span. Equal-gap mode divides remaining space into count+1 gaps. Fixed-end mode reserves your two end clearances and divides the rest between objects. One object is centred and must match the requested clearances in fixed-end mode. Reports each left edge and centre. This is layout geometry, without structural or code compliance checks.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"board-feet","name":"Board feet calculator","description":"Calculate sawn-lumber volume and a price estimate from board dimensions.","url":"https://toolmoz.com/tools/board-feet/","category":"home","method":"One board foot is 144 cubic inches. Board feet per piece = thickness in inches × width in inches × length in feet ÷ 12. Multiplies by count and your unit price. Uses the dimensions you enter, which may be actual or nominal according to your supplier’s pricing convention; it does not infer surfaced sizes, log yield, tax or waste.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Penn State Extension: board-foot definition","url":"https://extension.psu.edu/valuing-standing-timber"}]},{"slug":"picture-hanging-layout","name":"Picture hanging layout","description":"Position a centred picture and one or two aligned hanging points.","url":"https://toolmoz.com/tools/picture-hanging-layout/","category":"home","method":"Centres the picture horizontally in the available wall width. Picture top is desired centre height + half the picture height; hanging height is top minus your measured drop. Two points sit symmetrically about the horizontal centre. Requires picture and points to fit the stated geometry. The measured drop must include wire stretch/sag if relevant; no fastener or wall load capacity is evaluated.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"mitre-angle","name":"Equal mitre angle calculator","description":"Find matching mitre cuts for a flat corner or a regular polygon frame.","url":"https://toolmoz.com/tools/mitre-angle/","category":"home","method":"For an equal joint in flat stock, each cut is half the interior corner angle measured from the long edge. A mitre saw’s setting measured away from a square crosscut is (180° − interior angle)/2. A regular n-gon has interior angle 180° − 360°/n, giving a saw setting of 180°/n. Assumes two equal cuts, flat stock and no compound bevel.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"starter-feeding","name":"Sourdough starter feeding planner","description":"Build a target starter amount with a stated seed:flour:water feeding ratio.","url":"https://toolmoz.com/tools/starter-feeding/","category":"cooking","method":"Splits target mass in the seed starter : added flour : added water ratio, all by weight. Seed flour = seed mass/(1 + seed hydration/100), with the rest treated as water. Reports final flour, water and hydration. Predicts quantities only, without rise time, readiness or fermentation performance.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur Baking: feeding ratio by weight","url":"https://www.kingarthurbaking.com/blog/2025/03/13/sourdough-feeding-ratios"}]},{"slug":"dough-ball-planner","name":"Dough ball batch planner","description":"Plan a batch weight, handling allowance and ingredient quantities for dough portions.","url":"https://toolmoz.com/tools/dough-ball-planner/","category":"cooking","method":"Target portions total = count × ball weight. Required mixed mass = target/(1 − handling loss fraction), treating the loss as a fraction of the mixed batch. Flour is 100% and all other ingredient percentages are relative to flour. Divides mixed mass by the sum of these ratios. Includes only the listed ingredients; no starter, fermentation, cooking loss or dough-style recommendation is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"brine-concentration","name":"Brine percentage calculator","description":"Distinguish salt as a percentage of water from salt as a percentage of final brine.","url":"https://toolmoz.com/tools/brine-concentration/","category":"cooking","method":"For a water-weight percentage p, salt = p × water. For a final-brine mass fraction p, salt = p × water/(1 − p). Reports both definitions and the combined mass. This is two-ingredient mass arithmetic, without food displacement, salt already present, solubility, preservation or a validated recipe.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"coffee-ratio","name":"Coffee brew ratio calculator","description":"Calculate coffee or brew-water input using a chosen mass ratio.","url":"https://toolmoz.com/tools/coffee-ratio/","category":"cooking","method":"Uses dry coffee : brew-water input = 1 : ratio, all by mass. Divides water by the ratio or multiplies dose by it. The nominal combined input is shown separately. Brew-water input differs from beverage yield because grounds retain water; this does not model extraction, retention or recommend a brewing ratio.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"chocolate-blend","name":"Chocolate cocoa percentage blend","description":"Mix two labelled cocoa percentages to reach a target batch composition.","url":"https://toolmoz.com/tools/chocolate-blend/","category":"cooking","method":"Solves m₁ + m₂ = total and m₁p₁ + m₂p₂ = total × target. The target must be between two different cocoa percentages. Cocoa percentage is treated as the labelled mass fraction, without inferring cocoa solids versus butter, sugar, tempering behaviour or suitability as a recipe replacement.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fat-content-substitution","name":"Fat content substitution","description":"Match the fat mass of one ingredient using another ingredient’s labelled fat percentage.","url":"https://toolmoz.com/tools/fat-content-substitution/","category":"cooking","method":"Original fat mass = ingredient mass × original fat fraction. Replacement mass = that fat mass ÷ replacement fat fraction. Also shows the difference in non-fat mass. Non-fat portions may contain water, solids and other ingredients; the tool does not prescribe a water correction or promise equivalent texture, flavour or baking performance.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur Baking: fat composition affects baking","url":"https://www.kingarthurbaking.com/blog/2023/03/31/butter-oil-shortening-which-fat-makes-the-best-chocolate-chip-cookies"}]},{"slug":"bread-pan-dough","name":"Loaf pan dough loading","description":"Estimate a dough batch from internal pan volume and your chosen loading rate.","url":"https://toolmoz.com/tools/bread-pan-dough/","category":"cooking","method":"Calculates ideal internal rectangular or cylindrical volume, then multiplies litres by your supplied grams-per-litre dough loading and pan count. Uses straight walls; tapered pans need a measured volume instead. The loading rate is a scenario input, not a universal recommendation or prediction of proofing, rise, doneness or bake time.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"water-mixing-temperature","name":"Water mixing temperature","description":"Estimate an equilibrium temperature or hot/cold masses for a target temperature.","url":"https://toolmoz.com/tools/water-mixing-temperature/","category":"cooking","method":"Assumes liquid water with the same constant specific heat in both portions, no heat loss, no vessel heat capacity and no evaporation or phase change. Blend temperature = (m_cT_c + m_hT_h)/(m_c + m_h). For a target between two different temperatures, warm mass = total × (target − cool)/(warm − cool). Uses mass rather than assuming equal liquid volume at different temperatures.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: calorimetry and thermal equilibrium","url":"https://openstax.org/books/chemistry/pages/5-2-calorimetry"}]},{"slug":"annulus-calculator","name":"Annulus calculator","description":"Find the area, ring width and boundary lengths of a circular ring.","url":"https://toolmoz.com/tools/annulus-calculator/","category":"math","method":"Requires 0 ≤ inner radius ≤ outer radius. Ring area = π(R−r)(R+r), width = R−r, and the two boundary lengths are 2πR and 2πr. Uses one consistent input length unit; area is in its square.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"spherical-cap","name":"Spherical cap calculator","description":"Calculate the volume, base radius and surface areas of a sphere cut by a plane.","url":"https://toolmoz.com/tools/spherical-cap/","category":"math","method":"Requires cap height between zero and twice the sphere radius. Base radius = √[h(2R−h)], cap volume = πh²(R−h/3), curved area = 2πRh, and the closing disc area = πh(2R−h). At h=R this is a hemisphere; at h=2R it is a whole sphere. Uses one consistent length unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"conical-frustum","name":"Conical frustum calculator","description":"Find the volume and surface areas of a truncated right circular cone.","url":"https://toolmoz.com/tools/conical-frustum/","category":"math","method":"For a right circular frustum, volume = πh(R²+Rr+r²)/3. Slant height = √[h²+(R−r)²]; lateral area = π(R+r) × slant height. Adds the two circular end areas for the closed total. The radii may be equal (a cylinder), and either can be zero (a cone); they cannot both be zero.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"rectangular-pyramid","name":"Rectangular pyramid calculator","description":"Calculate a centred right pyramid’s volume, side areas and edge length.","url":"https://toolmoz.com/tools/rectangular-pyramid/","category":"math","method":"The apex is directly above the centre of a rectangular base. Volume = length × width × height/3. Each pair of side faces uses slant height √[h²+(opposite base dimension/2)²]. Adds the rectangular base for closed total surface area. This does not model an oblique or truncated pyramid.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"capsule-calculator","name":"Capsule volume & area","description":"Measure a cylinder with two hemispherical ends.","url":"https://toolmoz.com/tools/capsule-calculator/","category":"math","method":"A capsule is a right circular cylinder plus two hemispheres. Volume = πr²L + 4πr³/3, external area = 2πrL + 4πr², and end-to-end length = L + 2r. Enter only the straight section length. At zero straight length the shape is a sphere.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ellipsoid-volume","name":"Ellipsoid volume calculator","description":"Calculate volume and axis lengths from three semi-axes.","url":"https://toolmoz.com/tools/ellipsoid-volume/","category":"math","method":"Ellipsoid volume = 4πabc/3, where a, b and c are semi-axis lengths, not full diameters. Also reports full axis lengths and the radius of an equal-volume sphere using the geometric mean. Uses a single length unit throughout; surface area is not approximated.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"acceleration-converter","name":"Acceleration converter","description":"Convert metres per second squared, standard gravity, feet and Gal.","url":"https://toolmoz.com/tools/acceleration-converter/","category":"conversion","method":"Uses metres per second squared. Standard gravity gₙ is exactly 9.80665 m/s²; local gravitational acceleration may differ. A Gal is 1 cm/s². Negative values preserve a chosen direction. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"acceleration","urlParameters":{"value":"Finite numeric amount","from":[{"code":"mps2","label":"Metres per second squared (m/s²)"},{"code":"cmps2","label":"Centimetres per second squared (cm/s²)"},{"code":"fps2","label":"Feet per second squared (ft/s²)"},{"code":"ips2","label":"Inches per second squared (in/s²)"},{"code":"g0","label":"Standard gravities (gₙ)"},{"code":"Gal","label":"Gal (Gal)"}],"to":[{"code":"mps2","label":"Metres per second squared (m/s²)"},{"code":"cmps2","label":"Centimetres per second squared (cm/s²)"},{"code":"fps2","label":"Feet per second squared (ft/s²)"},{"code":"ips2","label":"Inches per second squared (in/s²)"},{"code":"g0","label":"Standard gravities (gₙ)"},{"code":"Gal","label":"Gal (Gal)"}]}},{"slug":"angular-velocity-converter","name":"Angular velocity converter","description":"Translate RPM, revolutions per second, radians and degrees per second.","url":"https://toolmoz.com/tools/angular-velocity-converter/","category":"conversion","method":"Uses radians per second. One complete revolution is 2π radians or 360 degrees. This converts angular velocity, rather than treating a radian as a whole cycle. Negative values retain the direction of rotation. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"angular-velocity","urlParameters":{"value":"Finite numeric amount","from":[{"code":"rads","label":"Radians per second (rad/s)"},{"code":"degs","label":"Degrees per second (°/s)"},{"code":"radmin","label":"Radians per minute (rad/min)"},{"code":"degmin","label":"Degrees per minute (°/min)"},{"code":"rpm","label":"Revolutions per minute (rpm)"},{"code":"rps","label":"Revolutions per second (rev/s)"}],"to":[{"code":"rads","label":"Radians per second (rad/s)"},{"code":"degs","label":"Degrees per second (°/s)"},{"code":"radmin","label":"Radians per minute (rad/min)"},{"code":"degmin","label":"Degrees per minute (°/min)"},{"code":"rpm","label":"Revolutions per minute (rpm)"},{"code":"rps","label":"Revolutions per second (rev/s)"}]}},{"slug":"volumetric-flow-converter","name":"Volumetric flow converter","description":"Convert liquid or gas volume rates, including L/min, CFM and gallons per minute.","url":"https://toolmoz.com/tools/volumetric-flow-converter/","category":"conversion","method":"Uses cubic metres per second. US liquid gallons are 3.785411784 litres; imperial gallons are 4.54609 litres. CFM uses international cubic feet. These are volume rates at the stated conditions; standard gas flow and mass flow need additional conditions or density. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"volumetric-flow","urlParameters":{"value":"Finite numeric amount","from":[{"code":"m3s","label":"Cubic metres per second (m³/s)"},{"code":"m3h","label":"Cubic metres per hour (m³/h)"},{"code":"Ls","label":"Litres per second (L/s)"},{"code":"Lmin","label":"Litres per minute (L/min)"},{"code":"USgpm","label":"US liquid gallons per minute (US gal/min)"},{"code":"IMPgpm","label":"Imperial gallons per minute (imp gal/min)"},{"code":"cfm","label":"Cubic feet per minute (ft³/min)"},{"code":"cfs","label":"Cubic feet per second (ft³/s)"}],"to":[{"code":"m3s","label":"Cubic metres per second (m³/s)"},{"code":"m3h","label":"Cubic metres per hour (m³/h)"},{"code":"Ls","label":"Litres per second (L/s)"},{"code":"Lmin","label":"Litres per minute (L/min)"},{"code":"USgpm","label":"US liquid gallons per minute (US gal/min)"},{"code":"IMPgpm","label":"Imperial gallons per minute (imp gal/min)"},{"code":"cfm","label":"Cubic feet per minute (ft³/min)"},{"code":"cfs","label":"Cubic feet per second (ft³/s)"}]}},{"slug":"mass-flow-converter","name":"Mass flow converter","description":"Convert kg/h, g/s, tonnes per hour and pounds per minute.","url":"https://toolmoz.com/tools/mass-flow-converter/","category":"conversion","method":"Uses kilograms per second. Tonnes are metric tonnes (1,000 kg), and pounds are international avoirdupois pounds (0.45359237 kg). Volume flow requires a fluid density and is a separate quantity. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"mass-flow","urlParameters":{"value":"Finite numeric amount","from":[{"code":"kgs","label":"Kilograms per second (kg/s)"},{"code":"kgh","label":"Kilograms per hour (kg/h)"},{"code":"gs","label":"Grams per second (g/s)"},{"code":"gmin","label":"Grams per minute (g/min)"},{"code":"th","label":"Metric tonnes per hour (t/h)"},{"code":"lbh","label":"Pounds per hour (lb/h)"},{"code":"lbmin","label":"Pounds per minute (lb/min)"}],"to":[{"code":"kgs","label":"Kilograms per second (kg/s)"},{"code":"kgh","label":"Kilograms per hour (kg/h)"},{"code":"gs","label":"Grams per second (g/s)"},{"code":"gmin","label":"Grams per minute (g/min)"},{"code":"th","label":"Metric tonnes per hour (t/h)"},{"code":"lbh","label":"Pounds per hour (lb/h)"},{"code":"lbmin","label":"Pounds per minute (lb/min)"}]}},{"slug":"dynamic-viscosity-converter","name":"Dynamic viscosity converter","description":"Convert centipoise, poise, Pa·s and pound-mass viscosity units.","url":"https://toolmoz.com/tools/dynamic-viscosity-converter/","category":"conversion","method":"Uses pascal seconds. One centipoise equals one millipascal second. Pound-per-foot-second uses pound mass, not pound-force. Converting to kinematic viscosity requires density; this tool does not assume a fluid or temperature. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"dynamic-viscosity","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Pas","label":"Pascal seconds (Pa·s)"},{"code":"mPas","label":"Millipascal seconds (mPa·s)"},{"code":"uPas","label":"Micropascal seconds (µPa·s)"},{"code":"cP","label":"Centipoise (cP)"},{"code":"P","label":"Poise (P)"},{"code":"lbfts","label":"Pounds per foot second (lb/(ft·s))"}],"to":[{"code":"Pas","label":"Pascal seconds (Pa·s)"},{"code":"mPas","label":"Millipascal seconds (mPa·s)"},{"code":"uPas","label":"Micropascal seconds (µPa·s)"},{"code":"cP","label":"Centipoise (cP)"},{"code":"P","label":"Poise (P)"},{"code":"lbfts","label":"Pounds per foot second (lb/(ft·s))"}]}},{"slug":"kinematic-viscosity-converter","name":"Kinematic viscosity converter","description":"Convert centistokes, stokes and square length per second units.","url":"https://toolmoz.com/tools/kinematic-viscosity-converter/","category":"conversion","method":"Uses square metres per second. One centistokes is 1 mm²/s, and one stokes is 1 cm²/s. Dynamic viscosity is a different quantity and needs density to convert between the two. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"kinematic-viscosity","urlParameters":{"value":"Finite numeric amount","from":[{"code":"m2s","label":"Square metres per second (m²/s)"},{"code":"mm2s","label":"Square millimetres per second (mm²/s)"},{"code":"cSt","label":"Centistokes (cSt)"},{"code":"St","label":"Stokes (St)"},{"code":"ft2s","label":"Square feet per second (ft²/s)"},{"code":"in2s","label":"Square inches per second (in²/s)"}],"to":[{"code":"m2s","label":"Square metres per second (m²/s)"},{"code":"mm2s","label":"Square millimetres per second (mm²/s)"},{"code":"cSt","label":"Centistokes (cSt)"},{"code":"St","label":"Stokes (St)"},{"code":"ft2s","label":"Square feet per second (ft²/s)"},{"code":"in2s","label":"Square inches per second (in²/s)"}]}},{"slug":"surface-tension-converter","name":"Surface tension converter","description":"Translate N/m, mN/m, dyn/cm and force per length.","url":"https://toolmoz.com/tools/surface-tension-converter/","category":"conversion","method":"Uses newtons per metre. One dyne per centimetre equals one millinewton per metre. Pound-force uses standard gravity; this converts a supplied surface tension without predicting its dependence on temperature or composition. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"surface-tension","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Nm","label":"Newtons per metre (N/m)"},{"code":"mNm","label":"Millinewtons per metre (mN/m)"},{"code":"dyncm","label":"Dynes per centimetre (dyn/cm)"},{"code":"lbfin","label":"Pounds-force per inch (lbf/in)"},{"code":"lbfft","label":"Pounds-force per foot (lbf/ft)"}],"to":[{"code":"Nm","label":"Newtons per metre (N/m)"},{"code":"mNm","label":"Millinewtons per metre (mN/m)"},{"code":"dyncm","label":"Dynes per centimetre (dyn/cm)"},{"code":"lbfin","label":"Pounds-force per inch (lbf/in)"},{"code":"lbfft","label":"Pounds-force per foot (lbf/ft)"}]}},{"slug":"electric-current-converter","name":"Electric current converter","description":"Convert amps, milliamps, microamps and nanoamps.","url":"https://toolmoz.com/tools/electric-current-converter/","category":"conversion","method":"Uses amperes and decimal SI prefixes. Negative values retain the chosen reference direction. Converting current to power requires voltage and an appropriate circuit model. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"electric-current","urlParameters":{"value":"Finite numeric amount","from":[{"code":"A","label":"Amperes (A)"},{"code":"mA","label":"Milliamperes (mA)"},{"code":"uA","label":"Microamperes (µA)"},{"code":"nA","label":"Nanoamperes (nA)"},{"code":"kA","label":"Kiloamperes (kA)"}],"to":[{"code":"A","label":"Amperes (A)"},{"code":"mA","label":"Milliamperes (mA)"},{"code":"uA","label":"Microamperes (µA)"},{"code":"nA","label":"Nanoamperes (nA)"},{"code":"kA","label":"Kiloamperes (kA)"}]}},{"slug":"electric-charge-converter","name":"Electric charge converter","description":"Convert coulombs, amp-hours, milliamp-hours and elementary charges.","url":"https://toolmoz.com/tools/electric-charge-converter/","category":"conversion","method":"Uses coulombs. One ampere hour is 3,600 C and one milliampere hour is 3.6 C. The positive elementary-charge magnitude e is exactly 1.602176634 × 10⁻¹⁹ C. Signed charge is retained; mAh alone does not specify battery energy. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"electric-charge","urlParameters":{"value":"Finite numeric amount","from":[{"code":"C","label":"Coulombs (C)"},{"code":"mC","label":"Millicoulombs (mC)"},{"code":"uC","label":"Microcoulombs (µC)"},{"code":"nC","label":"Nanocoulombs (nC)"},{"code":"Ah","label":"Ampere hours (A·h)"},{"code":"mAh","label":"Milliampere hours (mA·h)"},{"code":"e","label":"Elementary charges (e)"}],"to":[{"code":"C","label":"Coulombs (C)"},{"code":"mC","label":"Millicoulombs (mC)"},{"code":"uC","label":"Microcoulombs (µC)"},{"code":"nC","label":"Nanocoulombs (nC)"},{"code":"Ah","label":"Ampere hours (A·h)"},{"code":"mAh","label":"Milliampere hours (mA·h)"},{"code":"e","label":"Elementary charges (e)"}]}},{"slug":"electric-potential-converter","name":"Voltage converter","description":"Convert volts, millivolts, microvolts, kilovolts and megavolts.","url":"https://toolmoz.com/tools/electric-potential-converter/","category":"conversion","method":"Uses volts and decimal SI prefixes. Negative values retain the chosen polarity. This is a change of unit; no RMS, peak or peak-to-peak waveform relationship is assumed. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"electric-potential","urlParameters":{"value":"Finite numeric amount","from":[{"code":"V","label":"Volts (V)"},{"code":"mV","label":"Millivolts (mV)"},{"code":"uV","label":"Microvolts (µV)"},{"code":"kV","label":"Kilovolts (kV)"},{"code":"MV","label":"Megavolts (MV)"}],"to":[{"code":"V","label":"Volts (V)"},{"code":"mV","label":"Millivolts (mV)"},{"code":"uV","label":"Microvolts (µV)"},{"code":"kV","label":"Kilovolts (kV)"},{"code":"MV","label":"Megavolts (MV)"}]}},{"slug":"electrical-resistance-converter","name":"Electrical resistance converter","description":"Translate ohms, milliohms, microohms, kilohms and megohms.","url":"https://toolmoz.com/tools/electrical-resistance-converter/","category":"conversion","method":"Uses ohms and decimal SI prefixes for non-negative resistance magnitudes. Conductance is a reciprocal physical quantity, rather than another resistance unit, and is not mixed into this conversion. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"electrical-resistance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"ohm","label":"Ohms (Ω)"},{"code":"kohm","label":"Kilohms (kΩ)"},{"code":"Mohm","label":"Megohms (MΩ)"},{"code":"mohm","label":"Milliohms (mΩ)"},{"code":"uohm","label":"Microohms (µΩ)"}],"to":[{"code":"ohm","label":"Ohms (Ω)"},{"code":"kohm","label":"Kilohms (kΩ)"},{"code":"Mohm","label":"Megohms (MΩ)"},{"code":"mohm","label":"Milliohms (mΩ)"},{"code":"uohm","label":"Microohms (µΩ)"}]}},{"slug":"electrical-conductance-converter","name":"Electrical conductance converter","description":"Convert siemens, millisiemens, microsiemens and mhos.","url":"https://toolmoz.com/tools/electrical-conductance-converter/","category":"conversion","method":"Uses siemens and decimal SI prefixes for non-negative conductance magnitudes. One mho equals one siemens. Conductivity per metre and reciprocal resistance are different calculations. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"electrical-conductance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"S","label":"Siemens (S)"},{"code":"mS","label":"Millisiemens (mS)"},{"code":"uS","label":"Microsiemens (µS)"},{"code":"nS","label":"Nanosiemens (nS)"},{"code":"kS","label":"Kilosiemens (kS)"},{"code":"mho","label":"Mhos (mho)"}],"to":[{"code":"S","label":"Siemens (S)"},{"code":"mS","label":"Millisiemens (mS)"},{"code":"uS","label":"Microsiemens (µS)"},{"code":"nS","label":"Nanosiemens (nS)"},{"code":"kS","label":"Kilosiemens (kS)"},{"code":"mho","label":"Mhos (mho)"}]}},{"slug":"capacitance-converter","name":"Capacitance converter","description":"Convert farads, millifarads, microfarads, nanofarads and picofarads.","url":"https://toolmoz.com/tools/capacitance-converter/","category":"conversion","method":"Uses farads and decimal SI prefixes for non-negative capacitance magnitudes. Component markings, tolerances, voltage ratings and frequency dependence are not inferred. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"capacitance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"F","label":"Farads (F)"},{"code":"mF","label":"Millifarads (mF)"},{"code":"uF","label":"Microfarads (µF)"},{"code":"nF","label":"Nanofarads (nF)"},{"code":"pF","label":"Picofarads (pF)"}],"to":[{"code":"F","label":"Farads (F)"},{"code":"mF","label":"Millifarads (mF)"},{"code":"uF","label":"Microfarads (µF)"},{"code":"nF","label":"Nanofarads (nF)"},{"code":"pF","label":"Picofarads (pF)"}]}},{"slug":"inductance-converter","name":"Inductance converter","description":"Translate henries, millihenries, microhenries and nanohenries.","url":"https://toolmoz.com/tools/inductance-converter/","category":"conversion","method":"Uses henries and decimal SI prefixes for non-negative inductance magnitudes. This does not infer a component’s current rating, saturation, coupling or frequency-dependent behaviour. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"inductance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"H","label":"Henries (H)"},{"code":"mH","label":"Millihenries (mH)"},{"code":"uH","label":"Microhenries (µH)"},{"code":"nH","label":"Nanohenries (nH)"}],"to":[{"code":"H","label":"Henries (H)"},{"code":"mH","label":"Millihenries (mH)"},{"code":"uH","label":"Microhenries (µH)"},{"code":"nH","label":"Nanohenries (nH)"}]}},{"slug":"magnetic-flux-converter","name":"Magnetic flux converter","description":"Convert webers, milliwebers, microwebers and maxwells.","url":"https://toolmoz.com/tools/magnetic-flux-converter/","category":"conversion","method":"Uses webers. One maxwell is 10⁻⁸ Wb. Negative values preserve orientation. Flux density needs an area and field geometry; it is not another flux unit. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"magnetic-flux","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Wb","label":"Webers (Wb)"},{"code":"mWb","label":"Milliwebers (mWb)"},{"code":"uWb","label":"Microwebers (µWb)"},{"code":"Mx","label":"Maxwells (Mx)"}],"to":[{"code":"Wb","label":"Webers (Wb)"},{"code":"mWb","label":"Milliwebers (mWb)"},{"code":"uWb","label":"Microwebers (µWb)"},{"code":"Mx","label":"Maxwells (Mx)"}]}},{"slug":"magnetic-flux-density-converter","name":"Magnetic flux density converter","description":"Translate tesla, millitesla, microtesla, nanotesla and gauss.","url":"https://toolmoz.com/tools/magnetic-flux-density-converter/","category":"conversion","method":"Uses teslas for magnetic flux density B. One gauss is 10⁻⁴ T; one kilogauss is 0.1 T. Signed values retain orientation. Magnetic field strength H in A/m is a different quantity and needs material information to relate it to B. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"magnetic-flux-density","urlParameters":{"value":"Finite numeric amount","from":[{"code":"T","label":"Teslas (T)"},{"code":"mT","label":"Milliteslas (mT)"},{"code":"uT","label":"Microteslas (µT)"},{"code":"nT","label":"Nanoteslas (nT)"},{"code":"G","label":"Gauss (G)"},{"code":"kG","label":"Kilogauss (kG)"}],"to":[{"code":"T","label":"Teslas (T)"},{"code":"mT","label":"Milliteslas (mT)"},{"code":"uT","label":"Microteslas (µT)"},{"code":"nT","label":"Nanoteslas (nT)"},{"code":"G","label":"Gauss (G)"},{"code":"kG","label":"Kilogauss (kG)"}]}},{"slug":"illuminance-converter","name":"Illuminance converter","description":"Convert lux, footcandles, kilolux, millilux and phot.","url":"https://toolmoz.com/tools/illuminance-converter/","category":"conversion","method":"Uses lux, equal to one lumen per square metre. One footcandle is one lumen per square foot. Illuminance describes light arriving at a surface; lumens alone, luminance and electrical watts need additional information. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"illuminance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"lx","label":"Lux (lx)"},{"code":"klx","label":"Kilolux (klx)"},{"code":"mlx","label":"Millilux (mlx)"},{"code":"fc","label":"Footcandles (fc)"},{"code":"ph","label":"Phot (ph)"}],"to":[{"code":"lx","label":"Lux (lx)"},{"code":"klx","label":"Kilolux (klx)"},{"code":"mlx","label":"Millilux (mlx)"},{"code":"fc","label":"Footcandles (fc)"},{"code":"ph","label":"Phot (ph)"}]}},{"slug":"luminance-converter","name":"Luminance converter","description":"Convert nits, candela per square metre, footlamberts and stilb.","url":"https://toolmoz.com/tools/luminance-converter/","category":"conversion","method":"Uses candela per square metre, also called a nit. One footlambert is 1/π candela per square foot; one lambert is 10,000/π cd/m². This describes luminance in a viewing direction and does not convert display brightness into lux without geometry. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"luminance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"cdm2","label":"Candela per square metre (cd/m²)"},{"code":"nit","label":"Nits (nit)"},{"code":"cdft2","label":"Candela per square foot (cd/ft²)"},{"code":"fL","label":"Footlamberts (fL)"},{"code":"L","label":"Lamberts (L)"},{"code":"sb","label":"Stilb (sb)"}],"to":[{"code":"cdm2","label":"Candela per square metre (cd/m²)"},{"code":"nit","label":"Nits (nit)"},{"code":"cdft2","label":"Candela per square foot (cd/ft²)"},{"code":"fL","label":"Footlamberts (fL)"},{"code":"L","label":"Lamberts (L)"},{"code":"sb","label":"Stilb (sb)"}]}},{"slug":"specific-energy-converter","name":"Specific energy converter","description":"Translate joules per kilogram, watt-hours per kilogram and BTU per pound.","url":"https://toolmoz.com/tools/specific-energy-converter/","category":"conversion","method":"Uses joules per kilogram. One watt-hour is 3,600 J. BTU uses the International Table definition and pounds use international avoirdupois mass. This is energy per mass, rather than volumetric energy density. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"specific-energy","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Jkg","label":"Joules per kilogram (J/kg)"},{"code":"kJkg","label":"Kilojoules per kilogram (kJ/kg)"},{"code":"Jg","label":"Joules per gram (J/g)"},{"code":"Whkg","label":"Watt-hours per kilogram (W·h/kg)"},{"code":"kWhkg","label":"Kilowatt-hours per kilogram (kW·h/kg)"},{"code":"BTUlb","label":"IT BTU per pound (BTU (IT)/lb)"}],"to":[{"code":"Jkg","label":"Joules per kilogram (J/kg)"},{"code":"kJkg","label":"Kilojoules per kilogram (kJ/kg)"},{"code":"Jg","label":"Joules per gram (J/g)"},{"code":"Whkg","label":"Watt-hours per kilogram (W·h/kg)"},{"code":"kWhkg","label":"Kilowatt-hours per kilogram (kW·h/kg)"},{"code":"BTUlb","label":"IT BTU per pound (BTU (IT)/lb)"}]}},{"slug":"specific-heat-capacity-converter","name":"Specific heat capacity converter","description":"Convert J/(kg·K), kJ/(kg·K), calories per gram and BTU heat capacity units.","url":"https://toolmoz.com/tools/specific-heat-capacity-converter/","category":"conversion","method":"Uses joules per kilogram kelvin. These denominators are temperature differences: 1 K equals a 1 °C interval, while a 1 °F interval is 5/9 K, with no 32-degree offset. Calories are thermochemical (4.184 J), and BTU uses the International Table definition. No material heat capacity is predicted. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"specific-heat-capacity","urlParameters":{"value":"Finite numeric amount","from":[{"code":"JkgK","label":"Joules per kilogram kelvin (J/(kg·K))"},{"code":"kJkgK","label":"Kilojoules per kilogram kelvin (kJ/(kg·K))"},{"code":"JgK","label":"Joules per gram kelvin (J/(g·K))"},{"code":"calgK","label":"Thermochemical calories per gram kelvin (cal (th)/(g·K))"},{"code":"BTUlbF","label":"IT BTU per pound degree Fahrenheit (BTU (IT)/(lb·°F))"}],"to":[{"code":"JkgK","label":"Joules per kilogram kelvin (J/(kg·K))"},{"code":"kJkgK","label":"Kilojoules per kilogram kelvin (kJ/(kg·K))"},{"code":"JgK","label":"Joules per gram kelvin (J/(g·K))"},{"code":"calgK","label":"Thermochemical calories per gram kelvin (cal (th)/(g·K))"},{"code":"BTUlbF","label":"IT BTU per pound degree Fahrenheit (BTU (IT)/(lb·°F))"}]}},{"slug":"thermal-conductivity-converter","name":"Thermal conductivity converter","description":"Convert W/(m·K), milliwatts, BTU and calorie thermal conductivity units.","url":"https://toolmoz.com/tools/thermal-conductivity-converter/","category":"conversion","method":"Uses watts per metre kelvin. Temperature units represent intervals without an offset. BTU is International Table; calories are thermochemical. Conductivity is a material property and is distinct from total thermal conductance or a complete wall’s U-value. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"thermal-conductivity","urlParameters":{"value":"Finite numeric amount","from":[{"code":"WmK","label":"Watts per metre kelvin (W/(m·K))"},{"code":"mWmK","label":"Milliwatts per metre kelvin (mW/(m·K))"},{"code":"WcmK","label":"Watts per centimetre kelvin (W/(cm·K))"},{"code":"BTUhftF","label":"IT BTU per hour foot degree Fahrenheit (BTU (IT)/(h·ft·°F))"},{"code":"calcmK","label":"Thermochemical calories per second centimetre kelvin (cal (th)/(s·cm·K))"}],"to":[{"code":"WmK","label":"Watts per metre kelvin (W/(m·K))"},{"code":"mWmK","label":"Milliwatts per metre kelvin (mW/(m·K))"},{"code":"WcmK","label":"Watts per centimetre kelvin (W/(cm·K))"},{"code":"BTUhftF","label":"IT BTU per hour foot degree Fahrenheit (BTU (IT)/(h·ft·°F))"},{"code":"calcmK","label":"Thermochemical calories per second centimetre kelvin (cal (th)/(s·cm·K))"}]}},{"slug":"thermal-resistance-converter","name":"Thermal resistance converter","description":"Convert K/W, degrees Celsius per watt and degrees Fahrenheit per BTU/hour.","url":"https://toolmoz.com/tools/thermal-resistance-converter/","category":"conversion","method":"Uses kelvins per watt for total thermal resistance. Temperature differences have no scale offset: °C/W equals K/W, and °F/W equals 5/9 K/W. BTU is International Table. Area-normalised building R-values in m²·K/W are a different quantity and are excluded. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"thermal-resistance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"KW","label":"Kelvins per watt (K/W)"},{"code":"CW","label":"Degrees Celsius per watt (°C/W)"},{"code":"FW","label":"Degrees Fahrenheit per watt (°F/W)"},{"code":"FhBTU","label":"Degrees Fahrenheit hours per IT BTU (°F·h/BTU (IT))"}],"to":[{"code":"KW","label":"Kelvins per watt (K/W)"},{"code":"CW","label":"Degrees Celsius per watt (°C/W)"},{"code":"FW","label":"Degrees Fahrenheit per watt (°F/W)"},{"code":"FhBTU","label":"Degrees Fahrenheit hours per IT BTU (°F·h/BTU (IT))"}]}},{"slug":"molar-concentration-converter","name":"Molar concentration converter","description":"Convert mol/L, mmol/L, micromoles per litre and mol/m³.","url":"https://toolmoz.com/tools/molar-concentration-converter/","category":"conversion","method":"Uses moles per cubic metre. One mol/L equals 1,000 mol/m³ and one mmol/L equals 1 mol/m³. µmol/L is 0.001 mol/m³. Molar concentration uses final solution volume; mass concentration needs molar mass and is not interchangeable. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"molar-concentration","urlParameters":{"value":"Finite numeric amount","from":[{"code":"molm3","label":"Moles per cubic metre (mol/m³)"},{"code":"molL","label":"Moles per litre (mol/L)"},{"code":"mmolL","label":"Millimoles per litre (mmol/L)"},{"code":"umolL","label":"Micromoles per litre (µmol/L)"},{"code":"nmolL","label":"Nanomoles per litre (nmol/L)"},{"code":"molmL","label":"Moles per millilitre (mol/mL)"}],"to":[{"code":"molm3","label":"Moles per cubic metre (mol/m³)"},{"code":"molL","label":"Moles per litre (mol/L)"},{"code":"mmolL","label":"Millimoles per litre (mmol/L)"},{"code":"umolL","label":"Micromoles per litre (µmol/L)"},{"code":"nmolL","label":"Nanomoles per litre (nmol/L)"},{"code":"molmL","label":"Moles per millilitre (mol/mL)"}]}},{"slug":"amount-of-substance-converter","name":"Amount of substance converter","description":"Convert moles, millimoles, micromoles, nanomoles and picomoles.","url":"https://toolmoz.com/tools/amount-of-substance-converter/","category":"conversion","method":"Uses moles and decimal SI prefixes. One mole contains exactly 6.02214076 × 10²³ specified elementary entities. The entity must be specified consistently. Converting mass or gas volume into moles needs molar mass or gas conditions. Values are rounded to 12 significant figures for display.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: conversion factors by physical quantity","url":"https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b9"},{"label":"BIPM: the International System of Units","url":"https://www.bipm.org/en/measurement-units/"}],"conversionKind":"amount-of-substance","urlParameters":{"value":"Finite numeric amount","from":[{"code":"mol","label":"Moles (mol)"},{"code":"mmol","label":"Millimoles (mmol)"},{"code":"umol","label":"Micromoles (µmol)"},{"code":"nmol","label":"Nanomoles (nmol)"},{"code":"pmol","label":"Picomoles (pmol)"},{"code":"kmol","label":"Kilomoles (kmol)"}],"to":[{"code":"mol","label":"Moles (mol)"},{"code":"mmol","label":"Millimoles (mmol)"},{"code":"umol","label":"Micromoles (µmol)"},{"code":"nmol","label":"Nanomoles (nmol)"},{"code":"pmol","label":"Picomoles (pmol)"},{"code":"kmol","label":"Kilomoles (kmol)"}]}},{"slug":"frequency-converter","name":"Frequency converter","description":"Convert frequency units with clearly labelled standards.","url":"https://toolmoz.com/tools/frequency-converter/","category":"conversion","method":"One hertz is one cycle per second. Kilohertz, megahertz and gigahertz use decimal powers of 1,000. RPM is revolutions per minute; 60 RPM equals 1 Hz.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"frequency","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Hz","label":"Hertz (Hz)"},{"code":"kHz","label":"Kilohertz (kHz)"},{"code":"MHz","label":"Megahertz (MHz)"},{"code":"GHz","label":"Gigahertz (GHz)"},{"code":"rpm","label":"Revolutions per minute (rpm)"}],"to":[{"code":"Hz","label":"Hertz (Hz)"},{"code":"kHz","label":"Kilohertz (kHz)"},{"code":"MHz","label":"Megahertz (MHz)"},{"code":"GHz","label":"Gigahertz (GHz)"},{"code":"rpm","label":"Revolutions per minute (rpm)"}]}},{"slug":"data-rate-converter","name":"Data transfer rate converter","description":"Convert data transfer rate units with clearly labelled standards.","url":"https://toolmoz.com/tools/data-rate-converter/","category":"conversion","method":"Eight bits equal one byte. Decimal k, M and G prefixes use powers of 1,000; MiB uses 1,048,576 bytes. These are nominal transfer rates, without protocol overhead.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"data-rate","urlParameters":{"value":"Finite numeric amount","from":[{"code":"bps","label":"Bits per second (bps)"},{"code":"kbps","label":"Kilobits per second (kbps)"},{"code":"Mbps","label":"Megabits per second (Mbps)"},{"code":"Gbps","label":"Gigabits per second (Gbps)"},{"code":"Bps","label":"Bytes per second (Bps)"},{"code":"MBps","label":"Megabytes per second (MBps)"},{"code":"MiBps","label":"Mebibytes per second (MiBps)"}],"to":[{"code":"bps","label":"Bits per second (bps)"},{"code":"kbps","label":"Kilobits per second (kbps)"},{"code":"Mbps","label":"Megabits per second (Mbps)"},{"code":"Gbps","label":"Gigabits per second (Gbps)"},{"code":"Bps","label":"Bytes per second (Bps)"},{"code":"MBps","label":"Megabytes per second (MBps)"},{"code":"MiBps","label":"Mebibytes per second (MiBps)"}]}},{"slug":"density-converter","name":"Density converter","description":"Convert density units with clearly labelled standards.","url":"https://toolmoz.com/tools/density-converter/","category":"conversion","method":"Converts mass per unit volume. One gram per cubic centimetre equals 1,000 kilograms per cubic metre. Pound units use the international avoirdupois pound.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"density","urlParameters":{"value":"Finite numeric amount","from":[{"code":"kgm3","label":"Kilograms per cubic metre (kgm3)"},{"code":"gcm3","label":"Grams per cubic centimetre (gcm3)"},{"code":"gml","label":"Grams per millilitre (gml)"},{"code":"kgL","label":"Kilograms per litre (kgL)"},{"code":"lbft3","label":"Pounds per cubic foot (lbft3)"}],"to":[{"code":"kgm3","label":"Kilograms per cubic metre (kgm3)"},{"code":"gcm3","label":"Grams per cubic centimetre (gcm3)"},{"code":"gml","label":"Grams per millilitre (gml)"},{"code":"kgL","label":"Kilograms per litre (kgL)"},{"code":"lbft3","label":"Pounds per cubic foot (lbft3)"}]}},{"slug":"force-converter","name":"Force converter","description":"Convert force units with clearly labelled standards.","url":"https://toolmoz.com/tools/force-converter/","category":"conversion","method":"Converts force through newtons. Pounds-force and kilograms-force use standard gravity (9.80665 m/s²); these are force units rather than mass units.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"force","urlParameters":{"value":"Finite numeric amount","from":[{"code":"N","label":"Newtons (N)"},{"code":"kN","label":"Kilonewtons (kN)"},{"code":"lbf","label":"Pounds-force (lbf)"},{"code":"kgf","label":"Kilogram-force (kgf)"},{"code":"dyn","label":"Dynes (dyn)"}],"to":[{"code":"N","label":"Newtons (N)"},{"code":"kN","label":"Kilonewtons (kN)"},{"code":"lbf","label":"Pounds-force (lbf)"},{"code":"kgf","label":"Kilogram-force (kgf)"},{"code":"dyn","label":"Dynes (dyn)"}]}},{"slug":"torque-converter","name":"Torque converter","description":"Convert torque units with clearly labelled standards.","url":"https://toolmoz.com/tools/torque-converter/","category":"conversion","method":"Converts torque through newton-metres. A pound-force foot is approximately 1.3558179483314 Nm. Torque and energy share dimensions but describe different physical quantities.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"torque","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Nm","label":"Newton-metres (Nm)"},{"code":"kNm","label":"Kilonewton-metres (kNm)"},{"code":"lbfft","label":"Pound-force feet (lbfft)"},{"code":"lbfin","label":"Pound-force inches (lbfin)"}],"to":[{"code":"Nm","label":"Newton-metres (Nm)"},{"code":"kNm","label":"Kilonewton-metres (kNm)"},{"code":"lbfft","label":"Pound-force feet (lbfft)"},{"code":"lbfin","label":"Pound-force inches (lbfin)"}]}},{"slug":"area-converter","name":"Area converter","description":"Convert area units with clearly labelled standards.","url":"https://toolmoz.com/tools/area-converter/","category":"conversion","method":"Area uses squared length factors: one square foot is exactly 0.09290304 square metres. Acres are international acres; hectares equal 10,000 square metres.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"area","urlParameters":{"value":"Finite numeric amount","from":[{"code":"m2","label":"Square metres (m2)"},{"code":"cm2","label":"Square centimetres (cm2)"},{"code":"km2","label":"Square kilometres (km2)"},{"code":"ft2","label":"Square feet (ft2)"},{"code":"in2","label":"Square inches (in2)"},{"code":"yd2","label":"Square yards (yd2)"},{"code":"acre","label":"Acres (acre)"},{"code":"ha","label":"Hectares (ha)"}],"to":[{"code":"m2","label":"Square metres (m2)"},{"code":"cm2","label":"Square centimetres (cm2)"},{"code":"km2","label":"Square kilometres (km2)"},{"code":"ft2","label":"Square feet (ft2)"},{"code":"in2","label":"Square inches (in2)"},{"code":"yd2","label":"Square yards (yd2)"},{"code":"acre","label":"Acres (acre)"},{"code":"ha","label":"Hectares (ha)"}]}},{"slug":"volume-converter","name":"Volume converter","description":"Convert volume units with clearly labelled standards.","url":"https://toolmoz.com/tools/volume-converter/","category":"conversion","method":"Units are labelled explicitly: US customary liquid cups and gallons differ from imperial units. One litre is 1,000 millilitres. This converts volume only; mass conversions need a density.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"volume","urlParameters":{"value":"Finite numeric amount","from":[{"code":"l","label":"Litres (l)"},{"code":"ml","label":"Millilitres (ml)"},{"code":"m3","label":"Cubic metres (m3)"},{"code":"usgal","label":"US liquid gallons (usgal)"},{"code":"ukgal","label":"Imperial gallons (ukgal)"},{"code":"uscup","label":"US customary cups (uscup)"},{"code":"uktbsp","label":"Metric tablespoons (15 ml) (uktbsp)"},{"code":"ustbsp","label":"US tablespoons (ustbsp)"},{"code":"ustsp","label":"US teaspoons (ustsp)"},{"code":"usfloz","label":"US fluid ounces (usfloz)"},{"code":"ukfloz","label":"Imperial fluid ounces (ukfloz)"}],"to":[{"code":"l","label":"Litres (l)"},{"code":"ml","label":"Millilitres (ml)"},{"code":"m3","label":"Cubic metres (m3)"},{"code":"usgal","label":"US liquid gallons (usgal)"},{"code":"ukgal","label":"Imperial gallons (ukgal)"},{"code":"uscup","label":"US customary cups (uscup)"},{"code":"uktbsp","label":"Metric tablespoons (15 ml) (uktbsp)"},{"code":"ustbsp","label":"US tablespoons (ustbsp)"},{"code":"ustsp","label":"US teaspoons (ustsp)"},{"code":"usfloz","label":"US fluid ounces (usfloz)"},{"code":"ukfloz","label":"Imperial fluid ounces (ukfloz)"}]}},{"slug":"speed-converter","name":"Speed converter","description":"Convert speed units with clearly labelled standards.","url":"https://toolmoz.com/tools/speed-converter/","category":"conversion","method":"Speed is converted through metres per second. One international mile is 1,609.344 metres and one nautical mile is 1,852 metres.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"speed","urlParameters":{"value":"Finite numeric amount","from":[{"code":"mps","label":"Metres per second (mps)"},{"code":"kph","label":"Kilometres per hour (kph)"},{"code":"mph","label":"Miles per hour (mph)"},{"code":"knot","label":"Knots (knot)"},{"code":"fps","label":"Feet per second (fps)"}],"to":[{"code":"mps","label":"Metres per second (mps)"},{"code":"kph","label":"Kilometres per hour (kph)"},{"code":"mph","label":"Miles per hour (mph)"},{"code":"knot","label":"Knots (knot)"},{"code":"fps","label":"Feet per second (fps)"}]}},{"slug":"duration-converter","name":"Time unit converter","description":"Convert time unit units with clearly labelled standards.","url":"https://toolmoz.com/tools/duration-converter/","category":"conversion","method":"Uses fixed durations: a day is 24 hours and a week is seven days. Calendar months and years vary, so they are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"duration","urlParameters":{"value":"Finite numeric amount","from":[{"code":"s","label":"Seconds (s)"},{"code":"ms","label":"Milliseconds (ms)"},{"code":"min","label":"Minutes (min)"},{"code":"h","label":"Hours (h)"},{"code":"day","label":"Days (24 hours) (day)"},{"code":"week","label":"Weeks (7 days) (week)"}],"to":[{"code":"s","label":"Seconds (s)"},{"code":"ms","label":"Milliseconds (ms)"},{"code":"min","label":"Minutes (min)"},{"code":"h","label":"Hours (h)"},{"code":"day","label":"Days (24 hours) (day)"},{"code":"week","label":"Weeks (7 days) (week)"}]}},{"slug":"digital-storage-converter","name":"Digital storage converter","description":"Convert digital storage units with clearly labelled standards.","url":"https://toolmoz.com/tools/digital-storage-converter/","category":"conversion","method":"Decimal units (kB, MB, GB) use powers of 1,000. Binary units (KiB, MiB, GiB) use powers of 1,024. Eight bits equal one byte.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"digital-storage","urlParameters":{"value":"Finite numeric amount","from":[{"code":"B","label":"Bytes (B)"},{"code":"bit","label":"Bits (bit)"},{"code":"kB","label":"Kilobytes (1,000 bytes) (kB)"},{"code":"MB","label":"Megabytes (MB)"},{"code":"GB","label":"Gigabytes (GB)"},{"code":"TB","label":"Terabytes (TB)"},{"code":"KiB","label":"Kibibytes (1,024 bytes) (KiB)"},{"code":"MiB","label":"Mebibytes (MiB)"},{"code":"GiB","label":"Gibibytes (GiB)"},{"code":"TiB","label":"Tebibytes (TiB)"}],"to":[{"code":"B","label":"Bytes (B)"},{"code":"bit","label":"Bits (bit)"},{"code":"kB","label":"Kilobytes (1,000 bytes) (kB)"},{"code":"MB","label":"Megabytes (MB)"},{"code":"GB","label":"Gigabytes (GB)"},{"code":"TB","label":"Terabytes (TB)"},{"code":"KiB","label":"Kibibytes (1,024 bytes) (KiB)"},{"code":"MiB","label":"Mebibytes (MiB)"},{"code":"GiB","label":"Gibibytes (GiB)"},{"code":"TiB","label":"Tebibytes (TiB)"}]}},{"slug":"angle-converter","name":"Angle converter","description":"Convert angle units with clearly labelled standards.","url":"https://toolmoz.com/tools/angle-converter/","category":"conversion","method":"A full turn is 360 degrees, 2π radians or 400 gradians. Angles are converted without wrapping, so values above one turn and negative angles are retained.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"angle","urlParameters":{"value":"Finite numeric amount","from":[{"code":"deg","label":"Degrees (deg)"},{"code":"rad","label":"Radians (rad)"},{"code":"turn","label":"Turns (turn)"},{"code":"grad","label":"Gradians (grad)"},{"code":"arcmin","label":"Arcminutes (arcmin)"},{"code":"arcsec","label":"Arcseconds (arcsec)"}],"to":[{"code":"deg","label":"Degrees (deg)"},{"code":"rad","label":"Radians (rad)"},{"code":"turn","label":"Turns (turn)"},{"code":"grad","label":"Gradians (grad)"},{"code":"arcmin","label":"Arcminutes (arcmin)"},{"code":"arcsec","label":"Arcseconds (arcsec)"}]}},{"slug":"pressure-converter","name":"Pressure converter","description":"Convert pressure units with clearly labelled standards.","url":"https://toolmoz.com/tools/pressure-converter/","category":"conversion","method":"Uses pascals as the base unit. One standard atmosphere is 101,325 Pa and one bar is 100,000 Pa. Results are rounded for display.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"pressure","urlParameters":{"value":"Finite numeric amount","from":[{"code":"Pa","label":"Pascals (Pa)"},{"code":"kPa","label":"Kilopascals (kPa)"},{"code":"MPa","label":"Megapascals (MPa)"},{"code":"bar","label":"Bar (bar)"},{"code":"mbar","label":"Millibar (mbar)"},{"code":"atm","label":"Standard atmospheres (atm)"},{"code":"psi","label":"Pounds per square inch (psi)"}],"to":[{"code":"Pa","label":"Pascals (Pa)"},{"code":"kPa","label":"Kilopascals (kPa)"},{"code":"MPa","label":"Megapascals (MPa)"},{"code":"bar","label":"Bar (bar)"},{"code":"mbar","label":"Millibar (mbar)"},{"code":"atm","label":"Standard atmospheres (atm)"},{"code":"psi","label":"Pounds per square inch (psi)"}]}},{"slug":"energy-converter","name":"Energy converter","description":"Convert energy units with clearly labelled standards.","url":"https://toolmoz.com/tools/energy-converter/","category":"conversion","method":"A watt-hour is 3,600 joules. Calories use the thermochemical definition (4.184 J); BTU uses the International Table definition.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"energy","urlParameters":{"value":"Finite numeric amount","from":[{"code":"J","label":"Joules (J)"},{"code":"kJ","label":"Kilojoules (kJ)"},{"code":"Wh","label":"Watt-hours (Wh)"},{"code":"kWh","label":"Kilowatt-hours (kWh)"},{"code":"cal","label":"Thermochemical calories (cal)"},{"code":"kcal","label":"Thermochemical kilocalories (kcal)"},{"code":"BTU","label":"British thermal units (IT) (BTU)"}],"to":[{"code":"J","label":"Joules (J)"},{"code":"kJ","label":"Kilojoules (kJ)"},{"code":"Wh","label":"Watt-hours (Wh)"},{"code":"kWh","label":"Kilowatt-hours (kWh)"},{"code":"cal","label":"Thermochemical calories (cal)"},{"code":"kcal","label":"Thermochemical kilocalories (kcal)"},{"code":"BTU","label":"British thermal units (IT) (BTU)"}]}},{"slug":"power-converter","name":"Power converter","description":"Convert power units with clearly labelled standards.","url":"https://toolmoz.com/tools/power-converter/","category":"conversion","method":"A kilowatt is 1,000 watts. Mechanical horsepower and metric horsepower are separate options. BTU per hour uses the International Table BTU.","isAccessibleForFree":true,"requiresJavaScript":true,"conversionKind":"power","urlParameters":{"value":"Finite numeric amount","from":[{"code":"W","label":"Watts (W)"},{"code":"kW","label":"Kilowatts (kW)"},{"code":"MW","label":"Megawatts (MW)"},{"code":"hp","label":"Mechanical horsepower (hp)"},{"code":"PS","label":"Metric horsepower (PS)"},{"code":"btuh","label":"BTU (IT) per hour (btuh)"}],"to":[{"code":"W","label":"Watts (W)"},{"code":"kW","label":"Kilowatts (kW)"},{"code":"MW","label":"Megawatts (MW)"},{"code":"hp","label":"Mechanical horsepower (hp)"},{"code":"PS","label":"Metric horsepower (PS)"},{"code":"btuh","label":"BTU (IT) per hour (btuh)"}]}},{"slug":"descriptive-statistics","name":"Descriptive statistics","description":"Mean, median, mode, spread and standard deviation for your numbers.","url":"https://toolmoz.com/tools/descriptive-statistics/","category":"math","method":"Mean is the sum divided by count; the median is the middle sorted value. Population standard deviation divides squared deviations by n; sample standard deviation uses n−1. Modes show repeated values only. No missing-value imputation is performed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fraction-calculator","name":"Fraction calculator","description":"Add, subtract, multiply or divide exact fractions.","url":"https://toolmoz.com/tools/fraction-calculator/","category":"math","method":"Integer fractions are calculated exactly using BigInt, then reduced by the greatest common divisor. Denominators cannot be zero. The decimal approximation is rounded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ratio-simplifier","name":"Ratio simplifier","description":"Reduce a ratio of whole numbers to its simplest form.","url":"https://toolmoz.com/tools/ratio-simplifier/","category":"math","method":"Both integer parts are divided by their greatest common divisor. Use non-negative integers, with at least one non-zero part.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"percentage-change","name":"Percentage change","description":"Find the increase or decrease from one value to another.","url":"https://toolmoz.com/tools/percentage-change/","category":"math","method":"Percentage change = (new − original) ÷ |original| × 100. The absolute original value makes the sign indicate increase or decrease when starting from a negative number. A zero original value has no defined percentage change.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"random-number-generator","name":"Random number generator","description":"Generate unbiased whole numbers within your chosen range.","url":"https://toolmoz.com/tools/random-number-generator/","category":"math","method":"Uses Web Crypto random values and rejection sampling to avoid modulo bias. Bounds are inclusive and repeats are allowed. Generate again for a fresh sample.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"prime-checker","name":"Prime number checker","description":"Check whether a whole number is prime.","url":"https://toolmoz.com/tools/prime-checker/","category":"math","method":"Checks divisibility up to the square root, testing 2, 3 and candidates of the form 6k±1. Zero and one are neither prime nor composite. Supports whole numbers up to one trillion.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gcd-lcm-calculator","name":"GCD & LCM calculator","description":"Find the greatest common divisor and least common multiple.","url":"https://toolmoz.com/tools/gcd-lcm-calculator/","category":"math","method":"Uses Euclid’s algorithm with exact integers. GCD(0,0) is shown as zero by convention; the LCM is zero if either number is zero. Negative inputs use their absolute values.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"quadratic-solver","name":"Quadratic equation solver","description":"Solve ax² + bx + c = 0, including complex roots.","url":"https://toolmoz.com/tools/quadratic-solver/","category":"math","method":"Uses the quadratic formula, with scaling and a cancellation-resistant calculation for distinct real roots. The coefficient a must be non-zero. Extremely small or large coefficients may exceed floating-point precision.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"circle-calculator","name":"Circle calculator","description":"Find a circle’s area, diameter and circumference from its radius.","url":"https://toolmoz.com/tools/circle-calculator/","category":"math","method":"Area = πr², diameter = 2r and circumference = 2πr. Length outputs use your input unit; area uses its square.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"rectangle-calculator","name":"Rectangle calculator","description":"Calculate area, perimeter and diagonal from two side lengths.","url":"https://toolmoz.com/tools/rectangle-calculator/","category":"math","method":"Area = width × height, perimeter = 2(width + height), and diagonal = √(width² + height²). Use the same length unit for both inputs.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"triangle-calculator","name":"Triangle calculator","description":"Find area and perimeter from three side lengths.","url":"https://toolmoz.com/tools/triangle-calculator/","category":"math","method":"Uses a rearranged form of Heron’s formula. All sides must be positive and satisfy the triangle inequality. Use the same length unit for every side.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pythagorean-calculator","name":"Pythagorean calculator","description":"Find the hypotenuse of a right-angled triangle.","url":"https://toolmoz.com/tools/pythagorean-calculator/","category":"math","method":"For a right-angled triangle, c = √(a² + b²). The area is ab/2. Enter the two perpendicular sides using the same unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"case-converter","name":"Text case converter","description":"Change text to sentence, title, upper or lower case.","url":"https://toolmoz.com/tools/case-converter/","category":"text","method":"Uses Unicode-aware JavaScript case conversion. Title case capitalises each word, rather than applying a publication style guide. Sentence case uses punctuation as a simple boundary.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"slug-generator","name":"URL slug generator","description":"Turn a title into a clean, readable URL slug.","url":"https://toolmoz.com/tools/slug-generator/","category":"text","method":"Normalises diacritics, lowercases text and replaces non-letter/non-number runs with the chosen separator. Unicode letters are retained; this is not transliteration for every script.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"remove-duplicate-lines","name":"Remove duplicate lines","description":"Keep one copy of each line while preserving its order.","url":"https://toolmoz.com/tools/remove-duplicate-lines/","category":"text","method":"Keeps the first occurrence of each line. Comparison can ignore case and surrounding whitespace; original ordering is preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sort-lines","name":"Sort lines","description":"Sort lists alphabetically or by numeric value.","url":"https://toolmoz.com/tools/sort-lines/","category":"text","method":"Text sorting uses English locale comparison with numeric substrings. Numeric modes require a finite number on every non-empty line. Empty lines are removed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"whitespace-cleaner","name":"Whitespace cleaner","description":"Tidy spaces and line endings without retyping your text.","url":"https://toolmoz.com/tools/whitespace-cleaner/","category":"text","method":"Each mode applies the named transformation only. Non-breaking spaces count as whitespace when trimming. Your text is processed locally.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"find-replace","name":"Find & replace","description":"Replace literal text safely, with optional case matching.","url":"https://toolmoz.com/tools/find-replace/","category":"text","method":"Finds literal text, not regular expressions. Replaces all non-overlapping matches. Replacement text is inserted literally, including dollar signs.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"text-comparison","name":"Text comparison","description":"See which lines differ between two pieces of text.","url":"https://toolmoz.com/tools/text-comparison/","category":"text","method":"Compares corresponding lines by position and reports changed, added and removed lines. It is a simple line comparison, not a minimal edit-distance diff.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"reading-time","name":"Reading & speaking time","description":"Estimate how long your text takes to read or say aloud.","url":"https://toolmoz.com/tools/reading-time/","category":"text","method":"Words are whitespace-separated groups. Time = words ÷ your chosen speed. These are estimates; pauses, complexity and individual speed affect actual time.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"base64","name":"Base64 encoder & decoder","description":"Encode Unicode text to Base64, or decode it back.","url":"https://toolmoz.com/tools/base64/","category":"development","method":"Encodes UTF-8 text. Standard Base64 uses + and /; URL-safe Base64 uses - and _ without padding. Decoding rejects invalid Base64 and invalid UTF-8. Base64 is encoding, not encryption.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"url-encoder","name":"URL encoder & decoder","description":"Percent-encode a URL component or decode escaped text.","url":"https://toolmoz.com/tools/url-encoder/","category":"development","method":"Uses encodeURIComponent/decodeURIComponent for an individual component, not an entire URL. Invalid percent escapes are rejected. Form-data decoding can treat plus signs as spaces.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"html-entities","name":"HTML entity encoder & decoder","description":"Escape special characters or decode common HTML entities.","url":"https://toolmoz.com/tools/html-entities/","category":"development","method":"Escapes ampersands, angle brackets, quotes and apostrophes. Decodes the common named entities amp, lt, gt, quot, apos and nbsp, plus valid numeric references. It never renders the input as HTML.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"json-formatter","name":"JSON formatter","description":"Format or minify JSON and catch syntax errors.","url":"https://toolmoz.com/tools/json-formatter/","category":"development","method":"Formats strict JSON while preserving numeric literals, property order and duplicate keys. Comments and trailing commas are invalid. Supports up to 2 MB, 50,000 values and 128 nesting levels.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"hash-generator","name":"SHA hash generator","description":"Create SHA-256, SHA-384 or SHA-512 hashes of text.","url":"https://toolmoz.com/tools/hash-generator/","category":"development","method":"Hashes UTF-8 bytes with the browser’s Web Crypto API. Line endings and whitespace affect the digest. These general-purpose hashes are not password-storage algorithms.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"password-generator","name":"Password generator","description":"Generate random passwords on your device.","url":"https://toolmoz.com/tools/password-generator/","category":"development","method":"Uses Web Crypto with unbiased selection. Each password contains at least one character from each selected group and is shuffled with cryptographic randomness. Results stay in memory and are not stored. Strength depends on length, alphabet and how you use the password.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"uuid-generator","name":"UUID generator","description":"Generate random version 4 UUIDs.","url":"https://toolmoz.com/tools/uuid-generator/","category":"development","method":"Uses crypto.randomUUID to create version 4 UUIDs with cryptographic randomness. Uniqueness is probabilistic; no identifier database is checked.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"number-base-converter","name":"Number base converter","description":"Convert whole numbers between bases 2 to 36 exactly.","url":"https://toolmoz.com/tools/number-base-converter/","category":"development","method":"Uses exact BigInt arithmetic. Supports signed whole numbers and digits 0–9, A–Z, with no prefix. Fractions and decimal points are not supported.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"basic-auth-generator","name":"Basic Auth header generator","description":"Create an HTTP Basic authorization header locally.","url":"https://toolmoz.com/tools/basic-auth-generator/","category":"development","method":"Builds “Basic ” plus Base64 of username:password encoded as UTF-8. Usernames cannot contain a colon. Basic Auth is reversible encoding and should only be sent over HTTPS; server support for UTF-8 varies.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"jwt-decoder","name":"JWT decoder","description":"Inspect a JSON Web Token’s header and payload locally.","url":"https://toolmoz.com/tools/jwt-decoder/","category":"development","method":"Decodes the Base64url header and payload. It does not verify the signature, authenticity or authorisation. Never trust decoded claims without server-side verification.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"colour-converter","name":"Colour converter","description":"Convert HEX, RGB and HSL colour values.","url":"https://toolmoz.com/tools/colour-converter/","category":"design","method":"Accepts opaque #RGB/#RRGGBB, rgb(r,g,b) and hsl(h,s%,l%). RGB channels use 0–255 and HSL percentages use 0–100. Hues wrap through 360 degrees. Alpha channels are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"contrast-checker","name":"Colour contrast checker","description":"Check text and background contrast against WCAG ratios.","url":"https://toolmoz.com/tools/contrast-checker/","category":"design","method":"Calculates WCAG relative luminance and contrast ratio for opaque sRGB colours. AA requires 4.5:1 for normal text and 3:1 for large text; AAA requires 7:1 and 4.5:1 respectively. Large means at least 18 pt regular or 14 pt bold. Passing contrast alone does not establish full accessibility.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"aspect-ratio","name":"Aspect ratio calculator","description":"Simplify dimensions and resize proportionally.","url":"https://toolmoz.com/tools/aspect-ratio/","category":"design","method":"Reduces integer dimensions by their greatest common divisor. New height = new width × original height ÷ original width. Decimal output is shown before pixel rounding.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"px-rem-converter","name":"Pixels & rem converter","description":"Translate CSS pixels and rem using your chosen root size.","url":"https://toolmoz.com/tools/px-rem-converter/","category":"design","method":"One rem equals the root element’s computed font size. The default assumption is 16 CSS pixels, but users and styles can change it. This does not convert physical screen pixels.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gradient-generator","name":"CSS gradient generator","description":"Build a two-colour linear gradient and copy the CSS.","url":"https://toolmoz.com/tools/gradient-generator/","category":"design","method":"Creates a CSS linear-gradient with two opaque colour stops. In CSS, 0 degrees points upwards and 90 degrees points right. No image is uploaded or generated.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"date-add-subtract","name":"Add or subtract days","description":"Move a calendar date forwards or backwards.","url":"https://toolmoz.com/tools/date-add-subtract/","category":"dates","method":"Adds calendar days using UTC date arithmetic. All weekdays count, with no holiday exclusions. Supports dates in years 0001–9999.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"day-of-week","name":"Day of the week","description":"Find the weekday, day of the year and ISO week number.","url":"https://toolmoz.com/tools/day-of-week/","category":"dates","method":"Uses the Gregorian calendar. ISO weeks start on Monday; week 1 contains the year’s first Thursday. The ISO week year can differ from the calendar year near January.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"unix-timestamp","name":"Unix timestamp converter","description":"Convert Unix seconds or milliseconds to a UTC date and back.","url":"https://toolmoz.com/tools/unix-timestamp/","category":"dates","method":"Unix time counts elapsed seconds since 1970-01-01T00:00:00Z, ignoring leap seconds. Dates are explicitly interpreted as UTC. Second outputs are rounded down; millisecond inputs must be whole numbers.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"age-calculator","name":"Age calculator","description":"Calculate completed calendar years, months and days.","url":"https://toolmoz.com/tools/age-calculator/","category":"dates","method":"Counts completed years and months using calendar anniversaries, then remaining days. Month-end anniversaries are clamped to the final valid day, so a 29 February anniversary falls on 28 February in non-leap years. Conventions for legal age can differ.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"business-days","name":"Weekday counter","description":"Count Monday–Friday days between two dates.","url":"https://toolmoz.com/tools/business-days/","category":"dates","method":"Counts Monday to Friday, including the end date. Public holidays are not removed. The end date must be on or after the start date.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-viewer","name":"CSV viewer","description":"Open a CSV as a readable table, without uploading it.","url":"https://toolmoz.com/tools/csv-viewer/","category":"data","method":"Parses comma, semicolon or tab-separated text, including quoted delimiters, double-escaped quotes and embedded line breaks. The first row supplies unique headers. The preview shows up to 200 rows; downloads include all parsed rows.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-to-json","name":"CSV to JSON","description":"Turn CSV rows into a JSON array of objects.","url":"https://toolmoz.com/tools/csv-to-json/","category":"data","method":"Uses the first CSV row as unique object keys. All cell values remain strings, preserving leading zeros and identifiers. Empty cells become empty strings. No data is uploaded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"json-to-csv","name":"JSON to CSV","description":"Convert a JSON array of objects into a downloadable CSV.","url":"https://toolmoz.com/tools/json-to-csv/","category":"data","method":"Collects the union of object keys as headers. Missing and null values become empty cells; nested objects and arrays are serialised as JSON. Formula protection prefixes cells beginning with =, +, − or @, including after whitespace. Spreadsheet applications vary in how they interpret imported CSV.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-crosstab","name":"CSV crosstab","description":"Cross-tabulate categories with counts, sums or averages.","url":"https://toolmoz.com/tools/csv-crosstab/","category":"data","method":"Groups exact text values from your chosen columns. Count includes every row. Sum and mean ignore blank numeric cells and reject other non-numeric values. Missing groups show zero for counts/sums and blank for means. Limits keep processing practical in your browser.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"unit-price","name":"Unit price calculator","description":"Compare two pack sizes on the same unit basis.","url":"https://toolmoz.com/tools/unit-price/","category":"money","method":"Unit price = price ÷ quantity × comparison basis. Enter both quantities in the same unit and both prices in the same currency. Compares price only, without delivery costs or quality differences.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"dice-roller","name":"Dice roller","description":"Roll multiple dice with your chosen number of sides.","url":"https://toolmoz.com/tools/dice-roller/","category":"everyday","method":"Each die uses unbiased Web Crypto random selection from 1 through the number of sides, inclusive. Rolls are independent. Intended for games and everyday decisions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fuel-economy-converter","name":"Fuel economy converter","description":"Switch between mpg, litres per 100 km and km per litre.","url":"https://toolmoz.com/tools/fuel-economy-converter/","category":"conversion","method":"Uses the international mile and explicitly labelled US or imperial gallons. Litres/100 km is a consumption measure, so it is inversely related to mpg and km/l. Values must be positive.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"factorial-calculator","name":"Factorial calculator","description":"Calculate exact factorials from 0! to 1000!.","url":"https://toolmoz.com/tools/factorial-calculator/","category":"math","method":"n! is the product of integers 1 through n, with 0! = 1. Uses BigInt for an exact integer result. Large factorials have many digits.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"combinations-permutations","name":"Combinations & permutations","description":"Count ordered or unordered selections without replacement.","url":"https://toolmoz.com/tools/combinations-permutations/","category":"math","method":"Combinations nCr = n!/(r!(n−r)!), while permutations nPr = n!/(n−r)!. Items are distinct and selections are without replacement. Uses exact BigInt arithmetic.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"prime-factorisation","name":"Prime factorisation","description":"Break a whole number into its prime factors.","url":"https://toolmoz.com/tools/prime-factorisation/","category":"math","method":"Uses trial division up to the square root, removing each discovered factor before continuing. Supports whole numbers from 2 to one trillion.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"roman-numerals","name":"Roman numeral converter","description":"Convert whole numbers and canonical Roman numerals.","url":"https://toolmoz.com/tools/roman-numerals/","category":"math","method":"Uses canonical subtractive notation (IV, IX, XL, XC, CD, CM) for integers 1–3999. Rejects non-canonical input such as IIII or IC. Roman numerals have no zero in this convention.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"number-to-words","name":"Number to words","description":"Write whole numbers in British English.","url":"https://toolmoz.com/tools/number-to-words/","category":"math","method":"Converts integers from −999,999,999,999 to +999,999,999,999 using British English “and” and the short scale (a billion is 1,000 million). Decimal and currency amounts are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"scientific-notation","name":"Scientific notation converter","description":"Express a number in standard and scientific notation.","url":"https://toolmoz.com/tools/scientific-notation/","category":"math","method":"Uses JavaScript floating-point numbers. Scientific notation has one non-zero leading digit except for zero. Both representations are rounded to the chosen significant figures.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"proportion-calculator","name":"Proportion calculator","description":"Solve a / b = c / x for the missing fourth value.","url":"https://toolmoz.com/tools/proportion-calculator/","category":"math","method":"Cross multiplication gives x = b × c / a. The first numerator and denominator must be non-zero. Degenerate zero-denominator solutions are rejected.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"percentage-difference","name":"Percentage difference","description":"Compare two non-negative values symmetrically.","url":"https://toolmoz.com/tools/percentage-difference/","category":"math","method":"Percentage difference = |a−b| ÷ ((a+b)/2) × 100. Neither value is treated as the original. For an original-to-new comparison, use Percentage change instead. Two zero values give zero difference by convention.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"weighted-average","name":"Weighted average","description":"Calculate an average with a different weight for each value.","url":"https://toolmoz.com/tools/weighted-average/","category":"math","method":"Weighted mean = Σ(value × weight) / Σ(weight). Lists must have the same length, weights must be non-negative and at least one must be positive. Weights need not add up to 100.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"linear-regression","name":"Simple linear regression","description":"Fit a straight line to paired numeric observations.","url":"https://toolmoz.com/tools/linear-regression/","category":"data","method":"Fits y = intercept + slope × x using ordinary least squares. Pearson correlation and R² are also shown when defined. Both lists must have equal length, at least two observations and non-zero x variance. Association does not establish causation; no predictions beyond the data are implied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"list-picker","name":"Random list picker","description":"Choose items from a list without picking the same line twice.","url":"https://toolmoz.com/tools/list-picker/","category":"everyday","method":"Uses a cryptographically shuffled list of non-empty lines and takes the chosen count. Selection is without replacement by line position; identical text on different lines remains a separate entry.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"random-groups","name":"Random group generator","description":"Shuffle a list into balanced groups.","url":"https://toolmoz.com/tools/random-groups/","category":"everyday","method":"Shuffles non-empty lines with Web Crypto and distributes them round-robin, so group sizes differ by at most one. Identical lines are treated as separate entries.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"baking-pan-converter","name":"Baking pan converter","description":"Scale a recipe between round or rectangular baking pans.","url":"https://toolmoz.com/tools/baking-pan-converter/","category":"cooking","method":"Compares base areas, assuming the same batter depth and the same length unit throughout. Multiply ingredients by new area ÷ original area. This does not determine baking time, pan capacity or safe fill depth.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"trip-fuel-cost","name":"Trip fuel cost","description":"Estimate fuel quantity and cost from distance and consumption.","url":"https://toolmoz.com/tools/trip-fuel-cost/","category":"everyday","method":"Fuel = distance × litres/100 km ÷ 100. Cost = fuel × price per litre. This is an estimate based on your inputs; traffic, load and driving conditions change actual consumption.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pace-calculator","name":"Pace calculator","description":"Calculate pace and speed from a distance and finishing time.","url":"https://toolmoz.com/tools/pace-calculator/","category":"everyday","method":"Pace is elapsed time divided by distance; speed is distance divided by time. One mile is 1.609344 km. This is a unit calculation rather than training advice.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"time-duration","name":"Time duration calculator","description":"Find elapsed time between two clock times.","url":"https://toolmoz.com/tools/time-duration/","category":"dates","method":"Subtracts 24-hour clock times, plus your explicit additional-day count. For an overnight interval, set additional days to 1. This is clock arithmetic without time zones or daylight-saving adjustments.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"decimal-hours","name":"Decimal hours converter","description":"Convert decimal hours to hours:minutes:seconds and back.","url":"https://toolmoz.com/tools/decimal-hours/","category":"dates","method":"Decimal hours are rounded to the nearest second for duration output. Duration input uses H:MM or H:MM:SS, with minutes and seconds 00–59. Negative durations are supported.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"duration-adder","name":"Duration adder","description":"Add a list of times, including negative durations.","url":"https://toolmoz.com/tools/duration-adder/","category":"dates","method":"Parses hours, minutes and optional seconds, then adds the signed durations. Hours may exceed 24. A leading minus sign applies to the whole duration. Minutes and seconds must be 00–59.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"time-zone-viewer","name":"Time zone viewer","description":"See the same UTC instant in another time zone.","url":"https://toolmoz.com/tools/time-zone-viewer/","category":"dates","method":"Uses the browser’s Intl time-zone database for the supplied UTC instant, including daylight-saving rules available to that browser. Starting from an explicit UTC instant avoids ambiguous or missing local times at clock changes.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"text-to-binary","name":"Text & binary converter","description":"Encode UTF-8 text as binary bytes and decode it back.","url":"https://toolmoz.com/tools/text-to-binary/","category":"development","method":"Each UTF-8 byte is shown as eight binary digits. Non-ASCII characters may use multiple bytes. Decoding requires whole 8-bit groups and valid UTF-8.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"morse-code","name":"Morse code translator","description":"Translate letters and numbers to international Morse code.","url":"https://toolmoz.com/tools/morse-code/","category":"text","method":"Supports English letters A–Z and digits 0–9. Morse letters are separated by spaces and words by a slash. Unsupported characters or code groups are rejected instead of silently dropped.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"lorem-ipsum","name":"Placeholder text generator","description":"Create readable sample paragraphs for a layout.","url":"https://toolmoz.com/tools/lorem-ipsum/","category":"text","method":"Generates original English placeholder copy from a small bank of neutral sentences, rotated between paragraphs. This is deterministic sample content rather than AI-generated writing.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"margin-markup","name":"Margin & markup calculator","description":"Distinguish gross margin from markup on cost.","url":"https://toolmoz.com/tools/margin-markup/","category":"money","method":"Gross profit = price − cost. Gross margin = profit ÷ price × 100; markup = profit ÷ cost × 100. Markup is undefined for zero cost. Excludes tax, overhead and other charges unless you include them in your inputs.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"break-even","name":"Break-even calculator","description":"Estimate units needed to cover fixed and variable costs.","url":"https://toolmoz.com/tools/break-even/","category":"money","method":"Break-even units = fixed costs ÷ (selling price − variable cost). The whole-unit target is rounded up. Assumes fixed prices and costs and that every unit is sold; the selling price must exceed variable cost.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"json-viewer","name":"JSON viewer","description":"Explore a collapsible JSON tree, search values, format and minify.","url":"https://toolmoz.com/tools/json-viewer/","category":"development","method":"Parses strict JSON locally, with a collapsible tree, literal search and source locations for errors. Formatting preserves numeric literals, property order and duplicate keys. Duplicate keys remain visible and are flagged; their paths can be ambiguous. Supports UTF-8 JSON up to 2 MB, 50,000 values and 128 nesting levels. Large collections are paged in the tree.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-resizer","name":"Image resizer","description":"Resize an image to exact pixel dimensions, with a live preview.","url":"https://toolmoz.com/tools/image-resizer/","category":"images","method":"Decodes PNG, JPEG or WebP locally and redraws it at your chosen dimensions. Keep proportions enabled to preserve the aspect ratio. Output is a newly encoded, single-frame image; metadata and original colour profiles are not preserved. Up to 10 MB input, 32 megapixels decoded and 16 megapixels output.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-converter","name":"Image format converter","description":"Convert between PNG, JPEG and WebP on your device.","url":"https://toolmoz.com/tools/image-converter/","category":"images","method":"Re-encodes a supported image through the browser canvas. JPEG removes transparency using your chosen background colour; PNG and WebP can retain it. Output is single-frame, with metadata and original colour profiles removed. Format support depends on the browser.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-compressor","name":"Image compressor","description":"Adjust image quality and dimensions, then compare the file size.","url":"https://toolmoz.com/tools/image-compressor/","category":"images","method":"Exports JPEG or WebP at your chosen quality and maximum width. Smaller source images are not enlarged. Re-encoding does not guarantee a smaller file; the actual size change is shown before downloading. Metadata, animation and original colour profiles are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-rotate","name":"Rotate image","description":"Turn a photo by 90, 180 or 270 degrees.","url":"https://toolmoz.com/tools/image-rotate/","category":"images","method":"Rotates the decoded pixels clockwise and adjusts the output dimensions. Re-encodes a single frame in your selected format. Metadata, animation and original colour profiles are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-flip","name":"Flip image","description":"Mirror an image horizontally, vertically or both.","url":"https://toolmoz.com/tools/image-flip/","category":"images","method":"Transforms the decoded pixels around the chosen axes, keeping the same dimensions. Re-encodes a single frame; metadata, animation and original colour profiles are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"image-crop","name":"Crop image","description":"Crop an image using precise pixel coordinates.","url":"https://toolmoz.com/tools/image-crop/","category":"images","method":"The crop starts at x pixels from the left and y pixels from the top. Width and height must fit entirely within the source image. Pixel values are integers. Re-encodes a single frame without preserving metadata or original colour profiles.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-merge","name":"Merge PDFs","description":"Combine PDF files in the order you choose, entirely on your device.","url":"https://toolmoz.com/tools/pdf-merge/","category":"files","method":"Copies pages into a new PDF in the displayed file order. Limits: 20 files, 30 MB combined and 500 result pages. Password-protected PDFs are not supported. Interactive forms, bookmarks, attachments, document-level scripts and digital signatures are not preserved. Check the downloaded copy before using it.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-extract","name":"Extract PDF pages","description":"Keep selected pages or ranges in a new PDF.","url":"https://toolmoz.com/tools/pdf-extract/","category":"files","method":"Use one-based page numbers and ranges, such as 1,3-5. Pages are copied in your requested order, without repeated pages. Maximum 500 pages and 30 MB input. Password-protected PDFs are unsupported; document-level features and signatures are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-rotate","name":"Rotate PDF pages","description":"Rotate all or selected pages in a PDF.","url":"https://toolmoz.com/tools/pdf-rotate/","category":"files","method":"Adds a clockwise rotation to the selected pages’ existing rotation. Blank page selection means all pages. Maximum 500 pages and 30 MB input. Saves a new PDF and invalidates existing digital signatures. Password-protected PDFs are unsupported.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"qr-code-generator","name":"QR code generator","description":"Create a downloadable QR code for a link or short text.","url":"https://toolmoz.com/tools/qr-code-generator/","category":"design","method":"Encodes your exact text into a QR code locally. URLs are stored directly, without a redirect or tracking service. A four-module quiet zone is included. Longer text and higher error correction make denser codes; test the downloaded code with a reader before printing.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bmi-calculator","name":"BMI calculator","description":"Calculate adult body mass index using metric or imperial measurements.","url":"https://toolmoz.com/tools/bmi-calculator/","category":"health","method":"BMI = weight in kilograms ÷ height in metres squared. Uses CDC categories for adults aged 20 and older: below 18.5, 18.5 to below 25, 25 to below 30, and 30 or above. The category uses the unrounded result. BMI is a screening measure; it does not distinguish muscle from fat or assess health on its own.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"CDC adult BMI categories","url":"https://www.cdc.gov/bmi/adult-calculator/bmi-categories.html"}]},{"slug":"bmr-calculator","name":"BMR calculator","description":"Estimate the energy your body uses at rest with Mifflin–St Jeor.","url":"https://toolmoz.com/tools/bmr-calculator/","category":"health","method":"Uses the simplified Mifflin–St Jeor equation: 10 × weight (kg) + 6.25 × height (cm) − 5 × age, then +5 for males or −161 for females. This predicts resting energy expenditure, commonly used as a BMR estimate. The original study included adults aged 19–78. One nutritional kilocalorie equals 4.184 kJ.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Mifflin–St Jeor original study","url":"https://pubmed.ncbi.nlm.nih.gov/2305711/"}]},{"slug":"tdee-calculator","name":"TDEE calculator","description":"Estimate daily maintenance energy from resting metabolism and activity.","url":"https://toolmoz.com/tools/tdee-calculator/","category":"health","method":"Estimated total daily energy expenditure = Mifflin–St Jeor resting energy × physical activity level (PAL). The presets are representative points within FAO adult lifestyle ranges: light 1.40–1.69, active 1.70–1.99, vigorous 2.00–2.40. Choose for your whole daily lifestyle, including work and leisure. Individual needs can differ substantially; no weight-loss deficit is prescribed.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Mifflin–St Jeor original study","url":"https://pubmed.ncbi.nlm.nih.gov/2305711/"},{"label":"FAO adult energy and activity levels","url":"https://www.fao.org/4/y5686e/y5686e07.htm"}]},{"slug":"blood-glucose-converter","name":"Blood glucose converter","description":"Convert blood glucose between mg/dL and mmol/L.","url":"https://toolmoz.com/tools/blood-glucose-converter/","category":"health","method":"Converts mg/dL to mmol/L by multiplying by 0.0555, using the published NIDDK conversion factor. The reverse divides by the same factor. This is a rounded clinical unit conversion; it does not infer fasting status, diagnoses or treatment thresholds.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIDDK glucose conversion table","url":"https://www.niddk.nih.gov/-/media/Files/Strategic-Plans/Diabetes-in-America-3rd-Edition/DIA_Conversions.pdf"}]},{"slug":"cholesterol-converter","name":"Cholesterol & triglyceride converter","description":"Convert blood lipid units with the correct factor for each test.","url":"https://toolmoz.com/tools/cholesterol-converter/","category":"health","method":"For total, HDL and LDL cholesterol, mg/dL × 0.0259 = mmol/L. For triglycerides, mg/dL × 0.0113 = mmol/L. The reverse divides by the selected factor. These rounded clinical factors differ because the substances have different molecular masses. This does not estimate LDL or interpret a lipid panel.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIH lipid conversion factors","url":"https://www.ncbi.nlm.nih.gov/books/NBK597416/"}]},{"slug":"hba1c-converter","name":"HbA1c converter","description":"Convert HbA1c between NGSP percent and IFCC mmol/mol.","url":"https://toolmoz.com/tools/hba1c-converter/","category":"health","method":"Uses the NGSP–IFCC master equation: NGSP (%) = 0.09148 × IFCC (mmol/mol) + 2.152. The reverse is (NGSP − 2.152) ÷ 0.09148. Values that imply a negative IFCC result or an HbA1c fraction above 100% are rejected. HbA1c is distinct from a current blood glucose reading; this tool does not convert to estimated average glucose.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NGSP–IFCC master equation","url":"https://ngsp.org/ifcc.asp"}]},{"slug":"name-wheel","name":"Name wheel spinner","description":"Add names, spin a colourful wheel and reveal a random winner with a little suspense.","url":"https://toolmoz.com/tools/name-wheel/","category":"everyday","method":"Each non-empty line is one equally likely entry. The winner is selected locally with Web Crypto using rejection sampling to avoid modulo bias; the animation then lands inside that entry’s equal-sized sector. Repeated names are separate entries and increase that name’s total chance. Choose a 3, 6 or 10 second spin, skip to the reveal, optionally remove the winning entry, or restore removed entries. Names and the latest 100 results stay in page memory until you reload or leave. Reduced-motion preferences reveal the winner without spinning. For casual choices, games and classroom activities.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"currency-converter","name":"Currency converter","description":"Convert currencies with dated daily exchange rates, without fees or signups.","url":"https://toolmoz.com/tools/currency-converter/","category":"money","method":"Uses Frankfurter’s latest available daily blended reference rates, cached by Toolmoz for up to one hour. Amounts are calculated on your device using a shared USD reference: target rate ÷ source rate. Each currency can have a different observation date, shown with the result. This is an indicative conversion; banks, cards and exchanges can apply spreads and fees. Rates are not live trading quotes.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Frankfurter exchange-rate API","url":"https://frankfurter.dev/"}]},{"slug":"paint-calculator","name":"Paint calculator","description":"Estimate wall paint, coverage and cost for a rectangular room.","url":"https://toolmoz.com/tools/paint-calculator/","category":"home","method":"Wall area = 2 × (length + width) × height, less the openings you enter. Paint litres = net area × coats ÷ stated coverage, with your extra allowance added. Ceiling excluded. Coverage varies by paint and surface; use the figure on the tin.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"wallpaper-calculator","name":"Wallpaper calculator","description":"Estimate whole rolls with drop length and pattern-repeat allowances.","url":"https://toolmoz.com/tools/wallpaper-calculator/","category":"home","method":"Rounds height plus trimming upwards to a whole pattern repeat when specified. Whole drops per roll are rounded down; strips across the perimeter and rolls are rounded up. Doors/windows are not deducted. Assumes straight-match paper; half-drop matching and sloped walls need separate allowances.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"flooring-calculator","name":"Flooring pack calculator","description":"Work out floor area, whole packs and estimated material cost.","url":"https://toolmoz.com/tools/flooring-calculator/","category":"home","method":"Calculates rectangular floor area and adds the chosen cutting allowance before rounding up to whole packs. Cost uses whole packs, so purchased coverage may exceed the allowed area. Irregular rooms can be split into rectangles.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"tile-calculator","name":"Tile quantity calculator","description":"Estimate tiles and whole boxes from area and tile dimensions.","url":"https://toolmoz.com/tools/tile-calculator/","category":"home","method":"Divides allowed surface area by one tile’s area, then rounds up to whole tiles and boxes. Tile dimensions are converted from centimetres to metres. Grout gaps are excluded; layouts and breakage can change the required allowance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"concrete-calculator","name":"Concrete volume calculator","description":"Estimate concrete volume and bags using the stated bag yield.","url":"https://toolmoz.com/tools/concrete-calculator/","category":"home","method":"Volume = length × width × depth, with centimetres converted to metres. Adds the chosen allowance and divides litres by your bag’s mixed yield, rounding bags up. This estimates quantity only, not a structural slab design or mix specification.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"stair-calculator","name":"Stair layout calculator","description":"Explore riser count, tread count and straight stair run.","url":"https://toolmoz.com/tools/stair-calculator/","category":"home","method":"Riser count is the total rise divided by the desired riser height, rounded up. Actual risers are equal. A straight flight ending at the upper floor has one fewer tread than risers. Run = tread count × going. This geometric layout does not check local stair, landing, headroom or handrail requirements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"room-area-calculator","name":"Room area planner","description":"Add up multiple rooms and compare square metres with square feet.","url":"https://toolmoz.com/tools/room-area-calculator/","category":"home","method":"Enter one rectangle per CSV row, with positive length and width in the selected unit. Up to 200 rectangles. Adds gross floor areas without deductions; split L-shaped rooms into non-overlapping rectangles. Results include each room and the total.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"material-cost-calculator","name":"Material cost calculator","description":"Estimate quantities, delivery, tax and a project material total.","url":"https://toolmoz.com/tools/material-cost-calculator/","category":"home","method":"Adds the allowance, rounds up to whole packs and applies your supplied tax rate to materials plus delivery. Uses a single currency throughout. Tax treatment varies; this is an arithmetic estimate using your assumptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cups-to-grams","name":"Ingredient cups & grams converter","description":"Convert ingredient-specific US cups and grams in either direction.","url":"https://toolmoz.com/tools/cups-to-grams/","category":"cooking","method":"Uses ingredient-specific approximate weights per US recipe cup from the linked chart. Cup packing and measuring technique affect weight. Other cup standards can differ; weighing is more reliable. These factors do not apply to every ingredient.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur ingredient weights","url":"https://www.kingarthurbaking.com/learn/ingredient-weight-chart"}]},{"slug":"oven-fan-converter","name":"Oven & fan temperature converter","description":"Apply your chosen fan-oven adjustment in Celsius or Fahrenheit.","url":"https://toolmoz.com/tools/oven-fan-converter/","category":"cooking","method":"Subtracts your chosen Celsius offset for conventional-to-fan conversion, or adds it for the reverse. Converts Fahrenheit through Celsius first. The default 20°C is an editable cooking convention, not a universal appliance rule; follow the recipe and oven manufacturer’s guidance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"bakers-percentage","name":"Baker’s percentage calculator","description":"Express every ingredient relative to flour and scale a dough batch.","url":"https://toolmoz.com/tools/bakers-percentage/","category":"cooking","method":"Flour is 100%; each other ingredient’s percentage is its weight divided by flour weight × 100. Scales all four ingredients proportionally to the target dough weight. Includes only ingredients entered here, without inferring other flour or water.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur baker’s percentage","url":"https://www.kingarthurbaking.com/pro/reference/bakers-percentage"}]},{"slug":"dough-hydration","name":"Sourdough hydration calculator","description":"Include a starter’s flour and water in your total dough hydration.","url":"https://toolmoz.com/tools/dough-hydration/","category":"cooking","method":"Starter flour = starter weight ÷ (1 + starter hydration ÷ 100); the remainder is starter water. Total hydration = all water ÷ all flour × 100. This treats the entered liquid as water, without estimating water contained in milk, eggs or other ingredients.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"King Arthur bread hydration","url":"https://www.kingarthurbaking.com/blog/2023/01/11/bread-hydration"}]},{"slug":"recipe-cost-calculator","name":"Recipe cost calculator","description":"Cost a recipe from pack prices and the quantities you actually use.","url":"https://toolmoz.com/tools/recipe-cost-calculator/","category":"cooking","method":"For each row, cost = used quantity ÷ pack quantity × pack price. Keep used and pack quantities in the same unit within a row. Adds ingredient costs and divides by servings. Excludes labour, energy and overheads; up to 200 ingredients.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cooking-schedule","name":"Cooking schedule planner","description":"Work backwards from serving time for a sequence of kitchen tasks.","url":"https://toolmoz.com/tools/cooking-schedule/","category":"cooking","method":"Places tasks in the listed order, one after another, ending at the serving time. Works backwards by duration and marks previous-day times. No overlapping tasks or food-safety temperatures are inferred. Supports up to 100 tasks and a seven-day total duration.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"multiple-discounts","name":"Multiple discount calculator","description":"Apply successive discounts and see the effective overall saving.","url":"https://toolmoz.com/tools/multiple-discounts/","category":"money","method":"Applies each percentage to the remaining price in sequence. For example, 20% then 10% leaves 72% of the original, for a 28% saving. Supports up to 100 discounts from 0–100%. Tax, shipping and retailer rounding are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"subscription-cost","name":"Subscription cost calculator","description":"Compare recurring charges on monthly and annual bases.","url":"https://toolmoz.com/tools/subscription-cost/","category":"money","method":"Supports weekly, monthly, quarterly and yearly billing. Annualises weekly prices using 52 weeks and other periods using 12, 4 or 1 payments. Monthly equivalents divide annual cost by 12. Uses one currency, without price changes or tax assumptions; up to 200 subscriptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"savings-goal","name":"Savings goal calculator","description":"Work out a monthly contribution or time to reach a savings target.","url":"https://toolmoz.com/tools/savings-goal/","category":"money","method":"Subtracts existing savings from the target, with no remaining amount below zero. Required monthly savings divide the remainder by target months. Time at the supplied contribution rounds up to whole months. Assumes no interest, fees, withdrawals or inflation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"compound-interest","name":"Compound interest calculator","description":"Explore a savings balance with regular contributions and compounding.","url":"https://toolmoz.com/tools/compound-interest/","category":"money","method":"Uses your nominal annual rate and compounding frequency to derive an equivalent monthly growth rate. Adds monthly contributions at month-end. Assumes a constant rate and regular contributions. Shows nominal totals without taxes, fees or inflation; this is a scenario calculation, not a forecast.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"loan-repayment","name":"Loan repayment calculator","description":"Estimate fixed monthly payments and download an amortisation schedule.","url":"https://toolmoz.com/tools/loan-repayment/","category":"money","method":"Uses a fixed nominal annual rate divided by 12 and equal monthly payments. Handles zero interest. The schedule calculates interest on the remaining balance and adjusts the last payment to clear it. Fees, payment-date differences and lender-specific rounding are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"CFPB amortisation explanation","url":"https://www.consumerfinance.gov/ask-cfpb/what-is-amortization-and-how-could-it-affect-my-auto-loan-en-771/"}]},{"slug":"vat-calculator","name":"VAT add & remove calculator","description":"Add a supplied VAT rate or extract it from a gross price.","url":"https://toolmoz.com/tools/vat-calculator/","category":"money","method":"Adding VAT multiplies net by (1 + rate ÷ 100). Removing VAT divides gross by that factor; it does not subtract the percentage from gross. You supply the applicable rate. No country, exemption, registration threshold or tax entitlement is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"images-to-pdf","name":"Images to PDF","description":"Arrange PNG, JPEG or WebP images into one PDF on your device.","url":"https://toolmoz.com/tools/images-to-pdf/","category":"files","method":"Creates one fitted image per page, without cropping. A4, US Letter or image-sized pages at 96 dpi are available, with adjustable margins. Images are decoded and normalised to PNG locally. Up to 20 images, 30 MB input, 16 megapixels per image and 24 megapixels combined. Metadata and animation are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-page-numbers","name":"Add PDF page numbers","description":"Add sequential footer numbers to all or selected PDF pages.","url":"https://toolmoz.com/tools/pdf-page-numbers/","category":"files","method":"Prints sequential numbers in the selected pages’ footers using a built-in PDF font. Choose left, centre or right alignment and the starting number. Numbering follows the page-selection order. It does not remove existing numbers. Maximum 500 pages and 30 MB. Editing invalidates digital signatures.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-watermark","name":"Watermark PDF","description":"Add a translucent text watermark to all or selected PDF pages.","url":"https://toolmoz.com/tools/pdf-watermark/","category":"files","method":"Draws your text diagonally with adjustable opacity. Uses the built-in Latin Helvetica PDF font and fits text to the page width. Maximum 80 text characters, 500 pages and 30 MB. It is a visible marking, not copy protection. Editing can affect document features and invalidates digital signatures.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-reorder","name":"Reorder PDF pages","description":"Put every PDF page into the exact order you choose.","url":"https://toolmoz.com/tools/pdf-reorder/","category":"files","method":"Requires every page exactly once, using one-based comma-separated page numbers or ascending ranges. Copies pages in that order to a new PDF. Up to 500 pages and 30 MB. Forms, bookmarks and document-level features are not preserved; review the result.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pdf-split","name":"Split PDF into pages","description":"Download each PDF page as a separate file in one ZIP.","url":"https://toolmoz.com/tools/pdf-split/","category":"files","method":"Copies each page into a new, one-page PDF, named page-001.pdf and so on, then bundles them in a ZIP. Up to 500 pages and 30 MB input; separate PDF output is capped at 60 MB. Document-level forms, bookmarks, attachments and signatures are not preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"favicon-generator","name":"Favicon & ICO generator","description":"Create an ICO and a complete downloadable favicon kit from text or an image.","url":"https://toolmoz.com/tools/favicon-generator/","category":"design","method":"Generates PNG icons at 16, 32, 48, 180, 192, 256 and 512 pixels. The ICO contains 16/32/48/256 px PNG frames for modern browsers and systems. The ZIP includes Apple touch and app icons, a web manifest, HTML tags and instructions. Supports text initials or local PNG/JPEG/WebP images up to 10 MB and 32 megapixels. Image fit, padding and transparency are configurable. No maskable-icon or legacy-browser guarantee is included.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"MDN web-app icons","url":"https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/icons"},{"label":"Microsoft icon-file structure","url":"https://learn.microsoft.com/en-us/previous-versions/ms997538(v=msdn.10)"}]},{"slug":"soil-volume","name":"Soil volume calculator","description":"Estimate loose soil and whole bags for a rectangular area.","url":"https://toolmoz.com/tools/soil-volume/","category":"garden","method":"Volume = length × width × depth, converting centimetres to metres. Converts cubic metres to litres, adds your extra-volume allowance and rounds up to whole bags. No settlement or bulk-density value is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"raised-bed-soil","name":"Raised bed fill calculator","description":"Account for internal dimensions and unfilled space at the top.","url":"https://toolmoz.com/tools/raised-bed-soil/","category":"garden","method":"Uses internal length × width × (height − top gap). Converts cubic centimetres to litres and cubic metres, then rounds to whole bags. The gap must be smaller than the height. Layering, drainage and soil settlement are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pot-volume","name":"Plant pot volume calculator","description":"Estimate a tapered round pot’s internal capacity.","url":"https://toolmoz.com/tools/pot-volume/","category":"garden","method":"Treats the pot as a circular frustum: V = πh(R² + Rr + r²) ÷ 3. Uses internal diameters at the bottom and chosen fill height. Converts cm³ to litres. Irregular shapes, drainage layers and root balls are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"mulch-coverage","name":"Mulch coverage calculator","description":"See how far a bag or delivery will cover at your chosen depth.","url":"https://toolmoz.com/tools/mulch-coverage/","category":"garden","method":"One litre is 0.001 m³. Coverage = volume ÷ layer depth, with centimetres converted to metres. Also calculates the volume needed for the target area. Assumes a uniform layer; compaction and material losses are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"plant-spacing","name":"Plant spacing planner","description":"Lay out an evenly spaced rectangular planting grid.","url":"https://toolmoz.com/tools/plant-spacing/","category":"garden","method":"Places centres half a spacing from each edge, with whole rows and whole plants per row rounded down. Uses a rectangular grid, not staggered packing. You choose suitable spacing; mature spread and crop recommendations are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"lawn-seed","name":"Lawn seed quantity calculator","description":"Estimate seed from area and the application rate on your pack.","url":"https://toolmoz.com/tools/lawn-seed/","category":"garden","method":"Seed grams = area × your supplied pack rate. Adds the chosen allowance, converts to kilograms and rounds up to whole packs. The default is an example, not a recommended seeding rate; follow the product label.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pond-volume","name":"Pond volume calculator","description":"Estimate capacity from surface dimensions and average water depth.","url":"https://toolmoz.com/tools/pond-volume/","category":"garden","method":"Rectangular capacity = length × width × average depth. Elliptical capacity multiplies this by π/4. Converts m³ to litres. Use average water depth, not the deepest point; shelves and irregular edges can make this only an estimate.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"rainwater-harvest","name":"Rainwater collection estimator","description":"Translate rainfall and roof area into a potential collection volume.","url":"https://toolmoz.com/tools/rainwater-harvest/","category":"garden","method":"One millimetre over one square metre is one litre. Potential collection = catchment area × rainfall × supplied efficiency. Reports tank-limited collection and excess. Uses horizontal projected area and your assumptions, without forecasting rainfall or water quality.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"irrigation-runtime","name":"Irrigation runtime calculator","description":"Calculate the time needed to deliver a chosen water volume.","url":"https://toolmoz.com/tools/irrigation-runtime/","category":"garden","method":"Delivered litres = area in m² × water depth in mm. Runtime = litres ÷ measured total flow. Assumes uniform delivery and constant flow. The entered depth is your plan, not a watering recommendation; runoff, evaporation and plant needs are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"seed-trays","name":"Seed tray planner","description":"Estimate trays and seeds for a target number of seedlings.","url":"https://toolmoz.com/tools/seed-trays/","category":"garden","method":"Required cells = target seedlings ÷ expected successful-cell percentage, rounded up. Seed count = occupied cells × seeds per cell; trays round up to whole trays. The percentage represents your expected successful cells, not an independent probability calculation for each seed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fence-posts","name":"Fence post calculator","description":"Count posts and estimate actual equal spacing for a straight fence.","url":"https://toolmoz.com/tools/fence-posts/","category":"home","method":"Bays = ceiling(length ÷ maximum spacing). A single straight open run needs one more post than bays. Actual equal spacing = length ÷ bays. Gates, corners, joins and post embedment are excluded; this does not specify structural requirements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"decking","name":"Decking board calculator","description":"Estimate whole boards across a rectangular deck.","url":"https://toolmoz.com/tools/decking/","category":"home","method":"Rows = ceiling((deck width + gap) ÷ (board width + gap)). Boards per row = ceiling(deck length ÷ stock length). Adds the supplied allowance and rounds up. Reuse of offcuts, joints, framing, fixings and structural suitability are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gravel-volume","name":"Gravel volume & mass calculator","description":"Estimate loose aggregate volume, mass and whole bags.","url":"https://toolmoz.com/tools/gravel-volume/","category":"home","method":"Volume = length × width × depth, converting cm to m. Mass = allowed volume × your supplied bulk density. Whole bags round up. Bulk density varies by material and moisture; the example density is an assumption, not a product specification.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"brick-quantity","name":"Brick quantity estimator","description":"Estimate rectangular wall bricks with mortar joints and openings.","url":"https://toolmoz.com/tools/brick-quantity/","category":"home","method":"Net wall face area = length × height − openings. Divides by one brick’s nominal face area including one horizontal and vertical joint, then adds allowance and rounds up. A single face only; wall thickness, bond, corners and structural design are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"roof-pitch","name":"Roof pitch calculator","description":"Translate rise and horizontal run into an angle and rafter length.","url":"https://toolmoz.com/tools/roof-pitch/","category":"home","method":"Use matching units for rise and horizontal run. Angle = atan(rise/run), rafter length = hypot(rise,run), and rise per 12 = 12 × rise/run. Eaves, ridge cuts, material thickness and structural design are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"slope-gradient","name":"Slope & gradient calculator","description":"Compare gradient percentage, angle and rise-to-run ratio.","url":"https://toolmoz.com/tools/slope-gradient/","category":"home","method":"Gradient = rise ÷ horizontal run × 100. Angle = atan(rise/run), converted to degrees. A non-zero rise is also shown as 1 vertical to |run/rise| horizontal. Negative rise indicates a fall. This does not assess accessibility or drainage compliance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"appliance-energy-cost","name":"Appliance electricity cost","description":"Estimate energy and cost from power, usage and your tariff.","url":"https://toolmoz.com/tools/appliance-energy-cost/","category":"home","method":"Energy in kWh = watts ÷ 1,000 × hours per day × days. Cost = energy × your tariff. Enter average operating power, not a maximum rating when consumption varies. Standing charges, tiered prices and taxes are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"electricity-bill","name":"Electricity bill estimator","description":"Combine meter usage, unit price and a daily standing charge.","url":"https://toolmoz.com/tools/electricity-bill/","category":"home","method":"Usage = end reading − start reading. Subtotal = usage × unit price + days × standing charge. Applies only the additional tax percentage you supply. Requires increasing kWh readings; rollover, export, dual rates and tariff-specific rules are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"dpi-calculator","name":"Image DPI & print size","description":"See the physical print dimensions available at a chosen resolution.","url":"https://toolmoz.com/tools/dpi-calculator/","category":"design","method":"Print inches = pixel dimensions ÷ pixels per inch. Converts inches to centimetres using exactly 2.54 cm per inch. The setting changes the intended print size, not the image’s detail or pixel count.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pixel-dimensions","name":"Print size to pixels","description":"Calculate required pixels for physical artwork dimensions.","url":"https://toolmoz.com/tools/pixel-dimensions/","category":"design","method":"Converts physical dimensions to inches, multiplies by pixels per inch and rounds each dimension up to a whole pixel. Adds no bleed. Pixel count alone does not guarantee print quality, colour accuracy or suitable source detail.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"print-bleed","name":"Print bleed calculator","description":"Add equal bleed around a trim size and see the artwork dimensions.","url":"https://toolmoz.com/tools/print-bleed/","category":"design","method":"Artwork size = trim size + twice the bleed on each dimension. Converts to pixels at your supplied resolution, rounding up. Shows trim and bleed geometry only; follow the printer’s own bleed, safe-area and file requirements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"typography-scale","name":"Typography scale calculator","description":"Build a modular type scale around a base font size.","url":"https://toolmoz.com/tools/typography-scale/","category":"design","method":"For each integer step, size = base × ratio^step. Shows pixel sizes and rem equivalents using your chosen root size. This is a scale exploration; it does not choose accessible font sizes or line heights for a specific design.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"video-file-size","name":"Video file size estimator","description":"Estimate a video’s size from duration and combined bitrate.","url":"https://toolmoz.com/tools/video-file-size/","category":"design","method":"Total bits = duration seconds × (video Mbps × 1,000,000 + audio kbps × 1,000). Divides by eight for bytes, adds the chosen overhead and shows decimal MB and binary MiB. Variable bitrate and container overhead can change actual size.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"css-unit-converter","name":"CSS absolute unit converter","description":"Translate CSS pixels, points, inches and metric absolute units.","url":"https://toolmoz.com/tools/css-unit-converter/","category":"design","method":"Uses CSS definitions: 96 px = 1 inch = 72 pt = 6 pc = 2.54 cm = 25.4 mm = 101.6 Q. These are CSS reference units; an on-screen CSS inch need not measure one physical inch.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"MDN CSS length units","url":"https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/length"}]},{"slug":"sphere-calculator","name":"Sphere calculator","description":"Calculate a sphere’s volume and surface area from its radius.","url":"https://toolmoz.com/tools/sphere-calculator/","category":"math","method":"For a sphere with radius r, volume = 4πr³/3 and surface area = 4πr². All dimensions use one consistent unit; area and volume are in that unit squared and cubed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cylinder-calculator","name":"Cylinder calculator","description":"Find a right cylinder’s volume, curved area and total surface.","url":"https://toolmoz.com/tools/cylinder-calculator/","category":"math","method":"For a closed right circular cylinder, volume = πr²h, curved area = 2πrh and total surface area = 2πr(h+r). Use matching linear units throughout.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cone-calculator","name":"Cone calculator","description":"Calculate volume, slant height and surface area of a right cone.","url":"https://toolmoz.com/tools/cone-calculator/","category":"math","method":"For a right circular cone, slant height = hypot(r,h), volume = πr²h/3 and total area = πr(r+slant height), including the circular base. Use matching units.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cube-calculator","name":"Cube calculator","description":"Find a cube’s volume, surface area and space diagonal.","url":"https://toolmoz.com/tools/cube-calculator/","category":"math","method":"For side a, volume = a³, total surface = 6a² and corner-to-corner space diagonal = a√3. All dimensions use a consistent linear unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cuboid-calculator","name":"Cuboid calculator","description":"Calculate a rectangular box’s volume, surface and space diagonal.","url":"https://toolmoz.com/tools/cuboid-calculator/","category":"math","method":"For a closed rectangular cuboid, volume = lwh, surface = 2(lw+lh+wh) and space diagonal = √(l²+w²+h²). All dimensions must share a unit.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"trapezoid-calculator","name":"Trapezoid area calculator","description":"Find area from parallel sides and perpendicular height.","url":"https://toolmoz.com/tools/trapezoid-calculator/","category":"math","method":"Trapezoid area = (a+b)h/2, where a and b are the parallel sides and h is their perpendicular separation. Sloping side lengths are not the height.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"parallelogram-calculator","name":"Parallelogram area calculator","description":"Use a base and its perpendicular height to calculate area.","url":"https://toolmoz.com/tools/parallelogram-calculator/","category":"math","method":"Parallelogram area = base × perpendicular height. Use the height normal to the selected base, not the length of a sloping side. Area is in squared input units.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ellipse-calculator","name":"Ellipse calculator","description":"Calculate area and an approximate ellipse perimeter.","url":"https://toolmoz.com/tools/ellipse-calculator/","category":"math","method":"Inputs are semi-axes, half the full widths. Area = πab. Perimeter uses Ramanujan’s second approximation: π(a+b)[1+3h/(10+√(4−3h))], h=((a−b)/(a+b))². The perimeter is approximate.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"regular-polygon-calculator","name":"Regular polygon calculator","description":"Find the area, perimeter and radii of a regular polygon.","url":"https://toolmoz.com/tools/regular-polygon-calculator/","category":"math","method":"Assumes equal sides and equal angles. Perimeter = ns; apothem = s/[2tan(π/n)]; area = perimeter × apothem / 2; circumradius = s/[2sin(π/n)]. Angles shown in degrees.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"arc-length-calculator","name":"Arc length calculator","description":"Translate a circle’s central angle into an arc length.","url":"https://toolmoz.com/tools/arc-length-calculator/","category":"math","method":"Arc length = radius × angle in radians. Radians = degrees × π/180. The fraction of a complete circumference is angle/360. Uses the chosen angle from 0 through 360 degrees.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sector-calculator","name":"Circular sector calculator","description":"Calculate a sector’s area, arc and perimeter.","url":"https://toolmoz.com/tools/sector-calculator/","category":"math","method":"For a sector strictly between 0 and 360 degrees, area = πr²θ/360, arc = 2πrθ/360 and perimeter = arc + 2r. The two straight radii form part of the boundary.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polygon-area-coordinates","name":"Polygon coordinate area","description":"Calculate a simple polygon’s area from ordered coordinates.","url":"https://toolmoz.com/tools/polygon-area-coordinates/","category":"math","method":"Uses the shoelace formula on 3–500 ordered vertices, closing the last vertex to the first. Checks for crossing, touching non-adjacent edges and repeated vertices; these are rejected. Supports a simple polygon without holes. Area is in squared coordinate units.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"distance-between-points","name":"Distance between two points","description":"Find straight-line distance in a two-dimensional coordinate plane.","url":"https://toolmoz.com/tools/distance-between-points/","category":"math","method":"Euclidean distance = hypot(x₂−x₁, y₂−y₁). Both axes must use the same scale and units. This is planar geometry, not a geographic distance on the Earth.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"midpoint-calculator","name":"Midpoint calculator","description":"Find the point halfway between two coordinate pairs.","url":"https://toolmoz.com/tools/midpoint-calculator/","category":"math","method":"Midpoint coordinates are ((x₁+x₂)/2, (y₁+y₂)/2). Assumes a Cartesian plane with matching axis scales; geographic coordinates need a different model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"line-slope","name":"Line slope calculator","description":"Find a line’s gradient and intercept from two points.","url":"https://toolmoz.com/tools/line-slope/","category":"math","method":"Slope = (y₂−y₁)/(x₂−x₁), intercept = y₁−slope×x₁. Distinguishes vertical lines from repeated points. A vertical line has no finite slope or y-intercept.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"line-equation","name":"Line equation evaluator","description":"Evaluate y = mx + b and find its axis intercepts.","url":"https://toolmoz.com/tools/line-equation/","category":"math","method":"Evaluates y = mx+b directly. The x-intercept is −b/m for non-zero m. For a horizontal line, reports either no x-intercept or every x when b is zero.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"linear-equation","name":"Linear equation solver","description":"Solve a single equation of the form ax + b = c.","url":"https://toolmoz.com/tools/linear-equation/","category":"math","method":"For non-zero a, x=(c−b)/a. When a is zero, distinguishes no solution from infinitely many solutions by comparing b and c. Uses ordinary floating-point arithmetic.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"simultaneous-equations","name":"Two linear equations solver","description":"Solve two equations in x and y using their coefficients.","url":"https://toolmoz.com/tools/simultaneous-equations/","category":"math","method":"Solves ax+by=c and dx+ey=f with a scaled determinant formula. A near-zero determinant is rejected as singular or numerically unstable; the tool does not claim a unique answer in that case. Uses floating-point arithmetic.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"arithmetic-sequence","name":"Arithmetic sequence calculator","description":"Find a term and partial sum of a constant-step sequence.","url":"https://toolmoz.com/tools/arithmetic-sequence/","category":"math","method":"The nth term is first+(n−1)×difference. The sum of the first n terms is n×(first+last)/2. Term numbering starts at 1; differences may be negative or zero.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"geometric-sequence","name":"Geometric sequence calculator","description":"Find a term and finite sum of a constant-ratio sequence.","url":"https://toolmoz.com/tools/geometric-sequence/","category":"math","method":"Multiplies each term by the common ratio. Calculates the first n terms iteratively with compensated summation, handling zero, one and negative ratios. Rejects results outside finite-number range. Term numbering starts at 1.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"logarithm-calculator","name":"Logarithm calculator","description":"Calculate a logarithm in a chosen positive base.","url":"https://toolmoz.com/tools/logarithm-calculator/","category":"math","method":"log base b of x = ln(x)/ln(b). The value and base must be positive, and the base cannot equal 1. Also shows the natural and base-10 logarithms of the input.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"exponent-calculator","name":"Exponent calculator","description":"Raise a number to a power with real-number validation.","url":"https://toolmoz.com/tools/exponent-calculator/","category":"math","method":"Calculates base^exponent in real floating-point arithmetic. Rejects a negative base with a non-integer exponent, zero to a non-positive power, and non-finite results. Tiny magnitudes may underflow to zero.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"nth-root-calculator","name":"Nth root calculator","description":"Find a real positive- or odd-negative-number root.","url":"https://toolmoz.com/tools/nth-root-calculator/","category":"math","method":"Computes the nth root for a positive whole root degree. Negative values have a real result only for odd degrees. Returns zero for a zero value and uses floating-point arithmetic.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"standard-error","name":"Standard error of the mean","description":"Summarise sample variability and the standard error of its mean.","url":"https://toolmoz.com/tools/standard-error/","category":"math","method":"Uses sample standard deviation with denominator n−1, then standard error = sample standard deviation / √n. Needs at least two finite values. The interpretation assumes an appropriate independent sample; this tool does not test sampling assumptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"z-score","name":"Z-score calculator","description":"Express a value in standard deviations from a supplied mean.","url":"https://toolmoz.com/tools/z-score/","category":"math","method":"Z = (value−mean)/standard deviation. The supplied standard deviation must be positive. A z-score alone does not establish a normal distribution, percentile or statistical significance.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"percentile-calculator","name":"Percentile calculator","description":"Find an interpolated percentile in a set of numbers.","url":"https://toolmoz.com/tools/percentile-calculator/","category":"math","method":"Sorts values and uses inclusive linear interpolation at index (n−1)×p/100 (Hyndman–Fan type 7). Endpoints are the minimum and maximum. Other percentile conventions can give different results, especially for small samples.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"linear-interpolation","name":"Linear interpolation calculator","description":"Estimate a y value on the line through two known points.","url":"https://toolmoz.com/tools/linear-interpolation/","category":"math","method":"y = y₁+(x−x₁)(y₂−y₁)/(x₂−x₁). The known x values must differ. Reports whether x lies between them (interpolation) or outside them (extrapolation). It assumes a straight-line relationship.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"line-numbering","name":"Add line numbers","description":"Number text lines with a custom start and separator.","url":"https://toolmoz.com/tools/line-numbering/","category":"text","method":"Normalises line endings to LF and prefixes each line, including blank lines, with its line number and the literal separator. Supports up to 50,000 lines and does not interpret markup.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"text-wrap","name":"Text line wrapper","description":"Wrap paragraphs to a chosen character width.","url":"https://toolmoz.com/tools/text-wrap/","category":"text","method":"Wraps each original line independently at whitespace. Counts Unicode code points, collapses runs of whitespace within a line, and splits words longer than the width. Preserves blank lines; this is not a visual font-width measurement.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"reverse-text","name":"Reverse text or line order","description":"Reverse characters, words or lines in plain text.","url":"https://toolmoz.com/tools/reverse-text/","category":"text","method":"Character mode uses Intl.Segmenter grapheme clusters to preserve combined accents and emoji sequences. Word mode reverses whitespace-separated words on each line and normalises spacing. Line mode reverses the line order.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"unicode-inspector","name":"Unicode character inspector","description":"Inspect code points, names for common controls and UTF-8 bytes.","url":"https://toolmoz.com/tools/unicode-inspector/","category":"text","method":"Lists up to 1,000 Unicode code points, their U+ hexadecimal value and UTF-8 bytes. Combines no sequences: a displayed grapheme can contain several code points. Marks whitespace and common control characters explicitly.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"word-frequency","name":"Word frequency counter","description":"Count repeated words with Unicode-aware word segmentation.","url":"https://toolmoz.com/tools/word-frequency/","category":"text","method":"Uses Intl.Segmenter with English word segmentation and includes word-like segments only. Optionally folds case with English locale rules, then sorts by frequency and alphabetically for ties. Punctuation and emoji are excluded; language-specific tokenisation can differ. Accepts up to 500,000 characters. Shows the 30 most frequent words as an exportable bar chart; the table and CSV retain every distinct word.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"remove-diacritics","name":"Remove combining accents","description":"Create a text copy with Unicode combining marks removed.","url":"https://toolmoz.com/tools/remove-diacritics/","category":"text","method":"Normalises to Unicode NFD, removes combining-mark code points and returns NFC text. This changes accented letters such as é to e. It is not transliteration: letters such as ø and ß are not converted, and marks in other writing systems may be meaningful.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"list-prefix-suffix","name":"List prefix & suffix","description":"Add literal text before and after every line.","url":"https://toolmoz.com/tools/list-prefix-suffix/","category":"text","method":"Normalises line endings and adds the literal prefix and suffix. Blank lines can be left untouched. No templates, code, regular expressions or markup are executed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"list-to-csv","name":"Text list to CSV","description":"Turn one item per line into a safely quoted single-column CSV.","url":"https://toolmoz.com/tools/list-to-csv/","category":"data","method":"Exports one CSV column with the supplied non-empty heading. Quotes separators, newlines and double quotes as required. Potential spreadsheet formula prefixes are protected. Supports up to 50,000 input lines.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-transpose","name":"Transpose CSV","description":"Swap a small CSV’s rows and columns.","url":"https://toolmoz.com/tools/csv-transpose/","category":"data","method":"Treats the header as the first row and transposes the entire rectangular grid. Maximum 200 rows including header and 200 columns. The first input column becomes output headings, so those values must be non-empty and unique. CSV exports protect spreadsheet formula prefixes.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-select-columns","name":"Select CSV columns","description":"Keep chosen columns and put them in a different order.","url":"https://toolmoz.com/tools/csv-select-columns/","category":"data","method":"Select columns using one-based comma-separated positions, such as 3,1. Each position must exist and occur once. Preserves row order and original headings. CSV output quotes values and protects potential spreadsheet formulas.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-filter","name":"Filter CSV rows","description":"Keep rows matching a literal text or numeric condition.","url":"https://toolmoz.com/tools/csv-filter/","category":"data","method":"Text comparisons are literal and case-sensitive. Numeric comparisons require a finite comparison value and exclude blank or non-numeric cells. Uses a one-based column position and preserves row order. CSV export protects potential formulas.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-sort","name":"Sort CSV rows","description":"Sort an export by one column while retaining its header.","url":"https://toolmoz.com/tools/csv-sort/","category":"data","method":"Uses stable sorting by a one-based column position. Numeric mode requires every cell in that column to contain a finite number. Text mode uses English locale collation. Header and all columns are preserved; CSV exports protect potential formulas.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ohms-law","name":"Ohm’s law calculator","description":"Calculate current and resistor power from voltage and resistance.","url":"https://toolmoz.com/tools/ohms-law/","category":"science","method":"For an ideal ohmic resistor, current I = V/R and power P = V²/R. Voltage may be signed; resistance must be positive. Assumes a steady DC circuit and constant resistance, without temperature effects.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/20-2-ohms-law-resistance-and-simple-circuits"}]},{"slug":"electrical-power","name":"DC electrical power calculator","description":"Relate voltage and current to power and energy over time.","url":"https://toolmoz.com/tools/electrical-power/","category":"science","method":"For steady direct current, P = VI. Energy = power × duration; shows watt-hours, kilowatt-hours and joules. Uses voltage and current magnitudes and assumes they remain constant. AC power factor and waveforms are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/20-4-electric-power-and-energy"}]},{"slug":"resistor-network","name":"Series & parallel resistors","description":"Calculate ideal resistance in series or parallel.","url":"https://toolmoz.com/tools/resistor-network/","category":"science","method":"Series resistance is the sum. Parallel resistance is the reciprocal of the sum of reciprocals. Enter 1–1,000 component values from 1e-12 through 1e12 in Ω. Ideal components only; tolerances and frequency effects are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"capacitor-network","name":"Series & parallel capacitors","description":"Calculate ideal capacitance in series or parallel.","url":"https://toolmoz.com/tools/capacitor-network/","category":"science","method":"Parallel capacitance is the sum. Series capacitance is the reciprocal of the sum of reciprocals. Enter 1–1,000 component values from 1e-12 through 1e12 in µF. Ideal components only; tolerances and frequency effects are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"rc-time-constant","name":"RC time constant calculator","description":"Estimate ideal resistor-capacitor charging and discharging.","url":"https://toolmoz.com/tools/rc-time-constant/","category":"science","method":"Time constant τ = RC, converting kΩ to Ω and µF to F. For an initially uncharged ideal capacitor connected to a constant source, charge fraction = 1−exp(−t/τ). Discharge fraction from its initial voltage = exp(−t/τ).","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"capacitor-energy","name":"Capacitor energy calculator","description":"Find stored charge and energy from capacitance and voltage.","url":"https://toolmoz.com/tools/capacitor-energy/","category":"science","method":"Converts microfarads to farads. Stored charge Q = CV in coulombs; stored energy E = CV²/2 in joules. Assumes an ideal capacitor with constant capacitance, without losses or voltage-dependent behaviour.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"charge-current-time","name":"Charge from current & time","description":"Translate a constant current and duration into electric charge.","url":"https://toolmoz.com/tools/charge-current-time/","category":"science","method":"Electric charge Q = current × time in coulombs. Also expresses charge in ampere-hours using 3,600 seconds per hour. Assumes current stays constant; signed current gives signed charge transfer.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"kinetic-energy","name":"Kinetic energy calculator","description":"Find classical kinetic energy from mass and speed.","url":"https://toolmoz.com/tools/kinetic-energy/","category":"science","method":"Classical kinetic energy = mv²/2, in joules for kg and m/s. Applies to translational motion at non-relativistic speeds. It excludes rotation, deformation and potential energy.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"gravitational-potential","name":"Gravitational potential energy","description":"Calculate a near-surface energy change from a vertical height change.","url":"https://toolmoz.com/tools/gravitational-potential/","category":"science","method":"Potential-energy change ΔE = mgΔh. A negative height change gives a negative energy change. Assumes a constant gravitational field and uses the acceleration you supply; 9.80665 m/s² is the standard-gravity example.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"momentum-calculator","name":"Momentum calculator","description":"Calculate one-dimensional classical momentum.","url":"https://toolmoz.com/tools/momentum-calculator/","category":"science","method":"Momentum p = mass × signed velocity, in kg·m/s. The sign represents direction along one axis. Uses classical mechanics and excludes relativistic effects and multi-dimensional vector addition.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"acceleration-calculator","name":"Average acceleration calculator","description":"Find velocity change per unit time.","url":"https://toolmoz.com/tools/acceleration-calculator/","category":"science","method":"Average acceleration = (final velocity−initial velocity)/elapsed time, in m/s². Uses signed one-dimensional velocities. An average does not imply that acceleration was constant during the interval.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"newtons-second-law","name":"Newton’s second law calculator","description":"Relate mass and acceleration to net force.","url":"https://toolmoz.com/tools/newtons-second-law/","category":"science","method":"Net force F = ma in newtons for kg and m/s². Applies to a constant-mass body in an inertial reference frame. The sign follows the chosen axis; individual applied forces are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"constant-acceleration","name":"Constant acceleration calculator","description":"Find velocity and displacement in a one-dimensional motion model.","url":"https://toolmoz.com/tools/constant-acceleration/","category":"science","method":"Final velocity = u+at; displacement = ut+at²/2. Assumes constant acceleration along one axis. Signed displacement can differ from total distance if the object reverses direction.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"projectile-motion","name":"Ideal projectile motion","description":"Explore range, height and flight time for a level-ground model.","url":"https://toolmoz.com/tools/projectile-motion/","category":"science","method":"Assumes launch and landing at the same height, no air resistance and constant gravity. Flight time = 2v sin(θ)/g; range = v cos(θ) × flight time; maximum height = [v sin(θ)]²/(2g). Educational idealised motion model.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/3-4-projectile-motion"}]},{"slug":"wave-equation","name":"Wave speed calculator","description":"Relate wavelength and frequency to wave speed.","url":"https://toolmoz.com/tools/wave-equation/","category":"science","method":"Wave phase speed v = frequency × wavelength, in m/s. Also shows period = 1/frequency. Inputs must refer to the same wave and medium; dispersion and group velocity are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"frequency-period","name":"Frequency & period calculator","description":"Convert frequency into cycle period, or period into frequency.","url":"https://toolmoz.com/tools/frequency-period/","category":"science","method":"Frequency and period are reciprocals: f = 1/T and T = 1/f. Hertz means cycles per second. Requires a positive input; a zero frequency has no finite period.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"hookes-law","name":"Hooke’s law calculator","description":"Find the restoring force for an ideal linear spring.","url":"https://toolmoz.com/tools/hookes-law/","category":"science","method":"Restoring force F = −kx, with the minus sign opposing displacement from equilibrium. Applies only in the spring’s linear elastic range and ignores damping, preloads and geometric effects.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"spring-energy","name":"Spring energy calculator","description":"Calculate elastic potential energy stored in an ideal spring.","url":"https://toolmoz.com/tools/spring-energy/","category":"science","method":"Stored elastic energy E = kx²/2 in joules. Uses displacement from the equilibrium position and an ideal constant spring stiffness. Compression and extension of equal magnitude store equal energy in this model.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"pendulum-period","name":"Simple pendulum period","description":"Estimate a small-angle pendulum’s period and frequency.","url":"https://toolmoz.com/tools/pendulum-period/","category":"science","method":"Small-angle period T = 2π√(L/g), with length from pivot to the point mass. Assumes an ideal simple pendulum, small amplitude, negligible damping and constant gravity. Large swings require a different model.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"pressure-force-area","name":"Pressure from force & area","description":"Calculate average normal pressure on a surface.","url":"https://toolmoz.com/tools/pressure-force-area/","category":"science","method":"Average pressure P = normal force ÷ contact area, in pascals. Also shows kilopascals and bar. Assumes the entered force acts normal to the area; it does not model varying contact stress or structural strength.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"buoyancy-calculator","name":"Buoyant force calculator","description":"Find ideal buoyancy from displaced fluid volume and density.","url":"https://toolmoz.com/tools/buoyancy-calculator/","category":"science","method":"Archimedes’ principle: buoyant force = fluid density × displaced volume × gravity. Converts litres to cubic metres. Uses displaced volume, which may be smaller than the object’s total volume; assumes uniform fluid density.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"ideal-gas","name":"Ideal gas pressure calculator","description":"Estimate absolute pressure from gas amount, volume and temperature.","url":"https://toolmoz.com/tools/ideal-gas/","category":"science","method":"Ideal gas law P = nRT/V, converting litres to m³. Uses R = 8.31446261815324 J/(mol·K). Reports absolute pressure, not gauge pressure. An ideal-gas approximation may be inaccurate at high pressure or near condensation.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/13-3-the-ideal-gas-law"},{"label":"NIST molar gas constant","url":"https://physics.nist.gov/cgi-bin/cuu/Value?r%7Csearch_for=R"}]},{"slug":"solution-dilution","name":"Solution dilution calculator","description":"Calculate stock volume for a target concentration and final volume.","url":"https://toolmoz.com/tools/solution-dilution/","category":"science","method":"Uses C₁V₁=C₂V₂ with the same solute and concentration basis. Stock volume = target concentration × final volume ÷ stock concentration. Target cannot exceed stock concentration. The nominal solvent difference assumes additive volumes; this is arithmetic, not a preparation protocol.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax Chemistry","url":"https://openstax.org/books/chemistry-2e/pages/3-3-molarity"}]},{"slug":"molarity-calculator","name":"Molarity calculator","description":"Calculate concentration from solute amount and final solution volume.","url":"https://toolmoz.com/tools/molarity-calculator/","category":"science","method":"Molarity = moles of solute ÷ final solution volume in litres. Converts entered millilitres to litres. The volume is the complete solution volume, not the volume of solvent before mixing.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax Chemistry","url":"https://openstax.org/books/chemistry-2e/pages/3-3-molarity"}]},{"slug":"mass-moles","name":"Mass & moles calculator","description":"Convert a mass and molar mass into amount of substance, or back.","url":"https://toolmoz.com/tools/mass-moles/","category":"science","method":"Moles = mass in grams ÷ molar mass in g/mol. In the other direction, mass = moles × molar mass. You supply the molar mass and purity is assumed to be 100%; chemical composition is not inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax Chemistry","url":"https://openstax.org/books/chemistry-2e/pages/3-1-formula-mass-and-the-mole-concept"}]},{"slug":"specific-heat","name":"Specific heat energy calculator","description":"Estimate energy for a temperature change without a phase transition.","url":"https://toolmoz.com/tools/specific-heat/","category":"science","method":"Heat energy Q = mass × specific heat capacity × temperature change. A Celsius temperature difference equals a kelvin difference. Assumes constant specific heat and no phase change; excludes losses to the environment.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/14-2-temperature-change-and-heat-capacity"}]},{"slug":"thermal-expansion","name":"Linear thermal expansion","description":"Estimate a length change using a supplied expansion coefficient.","url":"https://toolmoz.com/tools/thermal-expansion/","category":"science","method":"First-order length change ΔL = αLΔT, converting the coefficient from µm/(m·K) to 1/K. Final length = L+ΔL. Assumes a constant coefficient and a suitable temperature range; does not model constraints, stress or phase changes.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"efficiency-calculator","name":"Energy efficiency calculator","description":"Compare useful energy output with total energy input.","url":"https://toolmoz.com/tools/efficiency-calculator/","category":"science","method":"Efficiency = useful energy output ÷ total energy input × 100. Useful output cannot exceed input in this energy-balance definition. Also shows the unaccounted energy difference. Heat-pump coefficient of performance is a different measure.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"centripetal-force","name":"Centripetal force calculator","description":"Find the inward force required for uniform circular motion.","url":"https://toolmoz.com/tools/centripetal-force/","category":"science","method":"Centripetal acceleration a = v²/r; required net inward force F = mv²/r. Assumes a point mass undergoing uniform circular motion. It does not identify the physical force providing that inward acceleration.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"work-calculator","name":"Work by a constant force","description":"Calculate work from force, displacement and their angle.","url":"https://toolmoz.com/tools/work-calculator/","category":"science","method":"Work W = force × displacement × cos(angle), in joules for newtons and metres. Assumes a constant force. Work can be negative when the force opposes the displacement; path-dependent or varying forces need integration.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax College Physics","url":"https://openstax.org/books/college-physics-2e/pages/index"}]},{"slug":"simple-interest","name":"Simple interest calculator","description":"Estimate interest without compounding or additional payments.","url":"https://toolmoz.com/tools/simple-interest/","category":"money","method":"Simple interest = principal × annual rate × years. Adds this interest to the original principal. Assumes a constant simple rate and no compounding, contributions, withdrawals, fees or tax. Use a consistent currency throughout.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"effective-annual-rate","name":"Effective annual rate calculator","description":"Compare a nominal annual rate with its compounded annual equivalent.","url":"https://toolmoz.com/tools/effective-annual-rate/","category":"money","method":"Effective annual rate = (1 + nominal annual rate / periods)^periods − 1. Assumes equal compounding periods and no fees or balance changes. This arithmetic equivalent does not determine a product’s regulated APR or APY disclosure.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"FDIC: compound interest","url":"https://www.fdic.gov/consumer-resource-center/chapter-5-compound-interest"}]},{"slug":"real-return","name":"Inflation-adjusted return","description":"Compare an effective return with inflation over the same period.","url":"https://toolmoz.com/tools/real-return/","category":"money","method":"Real return = (1 + nominal return)/(1 + inflation) − 1. Both rates must refer to the same period and exceed −100%. Uses the exact ratio rather than subtracting the rates. Excludes tax, fees and differences between a personal spending basket and general inflation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"inflation-calculator","name":"Inflation & purchasing power","description":"Explore future prices and the present purchasing power of an amount.","url":"https://toolmoz.com/tools/inflation-calculator/","category":"money","method":"Future equivalent price = amount × (1 + annual inflation)^years. Future purchasing power in today’s units = amount divided by that growth factor. Assumes a constant effective annual rate; this is a scenario, not a forecast of inflation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cagr-calculator","name":"Compound annual growth rate","description":"Find the constant annual growth rate between two positive values.","url":"https://toolmoz.com/tools/cagr-calculator/","category":"money","method":"CAGR = (ending value / starting value)^(1/years) − 1. Requires positive endpoints and a positive duration. It smooths variation between endpoints and assumes no intermediate contributions or withdrawals; it does not measure investment risk.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"return-on-investment","name":"Return on investment calculator","description":"Compare final proceeds with the complete cost you supply.","url":"https://toolmoz.com/tools/return-on-investment/","category":"money","method":"Net gain = proceeds − total cost. ROI = net gain / total cost × 100. Include all relevant costs and use matching periods and currencies. This simple calculation excludes timing, reinvestment, uncertainty and any costs or tax not entered.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Google Ads: ROI definition","url":"https://support.google.com/google-ads/answer/1722066?hl=en"}]},{"slug":"net-present-value","name":"Net present value calculator","description":"Discount a series of end-of-period cash flows and subtract the initial cost.","url":"https://toolmoz.com/tools/net-present-value/","category":"money","method":"NPV = −initial outlay + sum(cash flow at period t / (1 + periodic discount rate)^t). The first listed flow occurs at the end of period 1. Use equal time periods, one currency and a matching rate. Up to 1,200 flows; no forecast or discount rate is chosen for you.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: net present value","url":"https://openstax.org/books/principles-finance-2e/pages/16-2-net-present-value-npv-method"}]},{"slug":"payback-period","name":"Simple payback period","description":"Estimate when non-negative periodic cash inflows recover an initial outlay.","url":"https://toolmoz.com/tools/payback-period/","category":"money","method":"Adds non-negative end-of-period cash inflows until they cover the initial outlay. Interpolates the final period assuming its inflow is earned evenly. This undiscounted measure ignores cash flows after recovery and the time value of money; up to 1,200 equal periods.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"annuity-present-value","name":"Present value of regular payments","description":"Discount a fixed series of equal end-of-period payments.","url":"https://toolmoz.com/tools/annuity-present-value/","category":"money","method":"Ordinary annuity present value = payment × [1 − (1+r)^−n]/r. At zero rate, present value is payment × n. Payments occur at each period-end and the discount rate matches that period. Excludes fees, taxes and variable payments.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"savings-withdrawal","name":"Savings withdrawal scenario","description":"See how a constant monthly withdrawal changes a starting balance.","url":"https://toolmoz.com/tools/savings-withdrawal/","category":"money","method":"Converts the supplied effective annual return to an equivalent monthly rate. Applies growth, then a month-end withdrawal limited to the remaining balance. Stops at depletion or the chosen horizon. Constant-return scenario only; excludes volatility, tax, fees and inflation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"loan-overpayment","name":"Loan overpayment calculator","description":"Compare an additional monthly payment with a fixed-rate repayment schedule.","url":"https://toolmoz.com/tools/loan-overpayment/","category":"money","method":"Calculates the original amortising monthly payment using annual nominal interest divided by 12. Adds your extra payment each month and adjusts the last payment to clear the balance. Compares term and full-precision interest with the original schedule. Excludes fees, penalties and lender rounding.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"CFPB: amortisation","url":"https://www.consumerfinance.gov/ask-cfpb/what-is-amortization-and-how-could-it-affect-my-auto-loan-en-771/"}]},{"slug":"debt-payoff","name":"Fixed payment debt payoff","description":"Estimate a payoff schedule from a balance, interest rate and monthly payment.","url":"https://toolmoz.com/tools/debt-payoff/","category":"money","method":"Interest each month is balance × annual nominal rate / 12. Subtracts the supplied month-end payment and adjusts the final payment to clear the balance. Requires a payment greater than the initial monthly interest. Caps the schedule at 1,200 months; no new borrowing, fees or rate changes.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"CFPB: amortisation","url":"https://www.consumerfinance.gov/ask-cfpb/what-is-amortization-and-how-could-it-affect-my-auto-loan-en-771/"}]},{"slug":"cash-runway","name":"Cash runway calculator","description":"Compare available cash with a constant monthly operating cash burn.","url":"https://toolmoz.com/tools/cash-runway/","category":"money","method":"Net burn = monthly outflow − monthly inflow. For positive burn, runway = available cash / net burn. Otherwise reports that this constant-flow model does not deplete cash. Uses cash movements, not accounting profit, and assumes unchanged monthly flows.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"working-capital","name":"Working capital calculator","description":"Calculate net working capital and the current ratio.","url":"https://toolmoz.com/tools/working-capital/","category":"money","method":"Net working capital = current assets − current liabilities. Current ratio = current assets / current liabilities, or undefined when liabilities are zero. You classify the balances; no conclusion about solvency or liquidity quality is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: working capital","url":"https://openstax.org/books/principles-finance-2e/pages/19-1-what-is-working-capital"}]},{"slug":"inventory-turnover","name":"Inventory turnover calculator","description":"Compare cost of goods sold with average inventory over one period.","url":"https://toolmoz.com/tools/inventory-turnover/","category":"money","method":"Average inventory = (opening + closing)/2. Turnover = cost of goods sold / average inventory. Inventory days = period days / turnover when turnover is positive. Inventory values and cost of goods sold must use the same cost basis and currency.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"OpenStax: inventory ratios","url":"https://openstax.org/books/principles-financial-accounting/pages/10-5-examine-the-efficiency-of-inventory-management-using-financial-ratios"}]},{"slug":"economic-order-quantity","name":"Economic order quantity","description":"Explore the basic constant-demand inventory order model.","url":"https://toolmoz.com/tools/economic-order-quantity/","category":"money","method":"Basic EOQ = sqrt(2 × annual demand × fixed order cost / annual holding cost per unit). Shows theoretical order size, orders per year and relevant ordering plus holding cost. Assumes constant demand, instantaneous replenishment, no stockouts or quantity discounts. Fractional theoretical units are shown before any purchasing decision.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"reorder-point","name":"Reorder point calculator","description":"Combine expected demand during lead time with a supplied safety stock.","url":"https://toolmoz.com/tools/reorder-point/","category":"money","method":"Reorder point = average daily demand × lead time + supplied safety stock. Rounds the final stock threshold up to whole units. Assumes compatible time units and steady average demand. Safety stock and service levels are not estimated.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"marketplace-fees","name":"Marketplace fee & price calculator","description":"See net proceeds or find a price for your target profit after fees.","url":"https://toolmoz.com/tools/marketplace-fees/","category":"money","method":"Fee = selling price × percentage fee + fixed fee. Net profit subtracts fees and entered costs. Target price = (cost + fixed fee + target profit)/(1 − fee rate). Assumes the percentage applies to the entered price only; tax, delivery and platform-specific rules must be included in your inputs if relevant.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"freelance-hourly-rate","name":"Freelance hourly rate planner","description":"Translate an annual revenue requirement into billable hours and a rate.","url":"https://toolmoz.com/tools/freelance-hourly-rate/","category":"money","method":"Required annual revenue = target pre-tax income + business costs. Billable hours = working weeks × weekly hours × billable share. Indicative hourly rate divides required revenue by billable hours. No tax, benefits, demand, late payment or market price is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"salary-equivalent","name":"Gross salary equivalent","description":"Translate annual gross pay into monthly, weekly, daily and hourly equivalents.","url":"https://toolmoz.com/tools/salary-equivalent/","category":"money","method":"Monthly equivalent = annual gross pay / 12. Weekly pay divides by your supplied weeks, daily by weeks × days, and hourly by weeks × weekly hours. These are arithmetic gross equivalents and exclude tax, overtime, benefits and different paid-leave arrangements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"overtime-pay","name":"Overtime pay calculator","description":"Calculate gross pay with a threshold and overtime multiplier you choose.","url":"https://toolmoz.com/tools/overtime-pay/","category":"money","method":"Regular hours are the smaller of worked hours and the supplied threshold. Additional hours use hourly rate × overtime multiplier. Sums gross pay only. You provide the applicable period, threshold and multiplier; no employment-law rule or entitlement is determined.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"campaign-performance","name":"Advertising campaign calculator","description":"Calculate CPC, CPM, conversion rate, CPA and ROAS together.","url":"https://toolmoz.com/tools/campaign-performance/","category":"money","method":"CPC = spend/clicks; CPM = spend/impressions × 1,000; click-through rate = clicks/impressions; conversion rate = conversions/clicks; CPA = spend/conversions; ROAS = revenue/spend. Zero denominators show undefined. Use one period and attribution basis; counts may include repeat actions and are not forced into a one-to-one funnel.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sales-funnel","name":"Sales funnel calculator","description":"Compare stage counts and see step and overall conversion rates.","url":"https://toolmoz.com/tools/sales-funnel/","category":"money","method":"Requires 2–50 ordered stages with non-negative whole counts that do not increase. Reports conversion from the prior stage, conversion from the first stage and lost count. Zero denominators are undefined. Assumes each stage is a subset of the preceding stage in the same cohort.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"customer-acquisition-cost","name":"Customer acquisition cost","description":"Compare acquisition expenditure with new customers over the same period.","url":"https://toolmoz.com/tools/customer-acquisition-cost/","category":"money","method":"Blended acquisition cost = (entered marketing spend + entered sales spend) / newly acquired customers. Use a consistent period, currency and cost allocation. It does not establish attribution, customer lifetime value or a profitable spending threshold.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"customer-value","name":"Customer value scenario","description":"Estimate gross customer profit from order value, frequency and lifetime.","url":"https://toolmoz.com/tools/customer-value/","category":"money","method":"Modelled lifetime revenue = order revenue × orders per month × lifetime months. Gross profit multiplies by the supplied gross margin; subtracting acquisition cost gives contribution after acquisition only. Constant-behaviour scenario, without discounting, churn estimation, overheads or a predictive customer model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"customer-retention","name":"Customer retention rate","description":"Calculate retained customers after removing newly acquired customers.","url":"https://toolmoz.com/tools/customer-retention/","category":"money","method":"Retained existing customers = end customers − new customers. Retention = retained/start × 100. Requires retained customers between zero and the starting count. Assumes one consistent cohort definition; returning or reactivated customers need consistent classification.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"invoice-total","name":"Invoice line-item calculator","description":"Total quantities and unit prices with a supplied discount, delivery and tax.","url":"https://toolmoz.com/tools/invoice-total/","category":"money","method":"Line amount = quantity × unit price. Applies one order-level percentage discount, adds delivery, then applies your supplied tax rate to that total. Uses full precision until display. One currency and tax treatment throughout; this is not a legally compliant invoice generator.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"tiered-commission","name":"Tiered sales commission","description":"Apply progressive commission rates to successive sales bands.","url":"https://toolmoz.com/tools/tiered-commission/","category":"money","method":"Each threshold starts a new sales band and its rate applies only to sales in that band. First threshold must be zero; thresholds must strictly increase and rates must be 0–100%. Adds base pay after commission. Excludes caps, clawbacks, tax and contract-specific conditions; up to 100 bands.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"dimensional-weight","name":"Parcel dimensional weight","description":"Compare actual and volumetric weight using your carrier’s divisor.","url":"https://toolmoz.com/tools/dimensional-weight/","category":"money","method":"Volumetric kg = length × width × height in cm divided by your supplied carrier divisor. Chargeable weight is the larger of actual and volumetric weight, rounded up to your chosen kg increment. No carrier tariff, dimensional rounding or service rule is selected for you.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"straight-line-depreciation","name":"Straight-line depreciation","description":"Spread depreciable cost over a supplied useful life.","url":"https://toolmoz.com/tools/straight-line-depreciation/","category":"money","method":"Annual straight-line depreciation = (cost − residual value) / useful life. Shows year-end book values, ending at the residual value. Requires residual value no higher than cost. Uses full years and your supplied assumptions; no accounting-policy or tax allowance eligibility is determined.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"assignment-grade","name":"Assignment grade calculator","description":"Combine assignment marks with optional weights and different maximum scores.","url":"https://toolmoz.com/tools/assignment-grade/","category":"education","method":"In weighted mode, converts each score to a percentage and weights it by the supplied non-negative weight. Weights are normalised by their total. Points mode divides total earned points by total possible points. Scores must be 0–maximum; up to 200 assignments. No school grading policy is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"required-final-grade","name":"Required final exam grade","description":"Find the final-exam percentage needed to reach a target overall grade.","url":"https://toolmoz.com/tools/required-final-grade/","category":"education","method":"Overall grade = current average × (1−final weight) + final grade × final weight. Solves for the required final grade. A result above 100% is unreachable within the 0–100 grading model; a result at or below zero is already secured by the entered non-final contribution.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"exam-score","name":"Exam score with negative marking","description":"Calculate an exam’s raw and percentage score from its marking scheme.","url":"https://toolmoz.com/tools/exam-score/","category":"education","method":"Raw score = correct × award − incorrect × penalty. Maximum possible = all questions × correct-answer award, including unanswered questions. Percentage can be negative when penalties exceed earned marks. Requires at least one question. Uses only the marking scheme you enter.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"gpa-calculator","name":"Credit-weighted GPA calculator","description":"Calculate a GPA from course credits and grade points you supply.","url":"https://toolmoz.com/tools/gpa-calculator/","category":"education","method":"GPA = sum(course credits × grade points) / total credits. Credits must be positive and grade points from zero to your supplied scale maximum. Uses your grade points rather than converting letters, honours weighting or local policies. Up to 200 courses.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"grade-boundaries","name":"Custom grade boundary checker","description":"Map a percentage to a grading scale that you define.","url":"https://toolmoz.com/tools/grade-boundaries/","category":"education","method":"Chooses the grade with the largest inclusive minimum no greater than the score. Boundaries must start at 0, strictly increase and remain at or below 100. Uses only your supplied labels and thresholds; no official school, exam board or country scale is claimed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"study-time-planner","name":"Study time allocation planner","description":"Divide a study-time budget between subjects using your own priorities.","url":"https://toolmoz.com/tools/study-time-planner/","category":"education","method":"Allocates whole minutes in proportion to non-negative subject priorities. Uses largest remainders so the allocated minutes exactly equal the available whole-minute budget. Requires a positive total priority and 1–100 subjects. Breaks and topic difficulty must be reflected in your available time and priorities.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"reading-plan","name":"Reading plan calculator","description":"Turn a page target and daily budget into a manageable reading plan.","url":"https://toolmoz.com/tools/reading-plan/","category":"education","method":"Remaining pages = total − already read. Distributes whole pages as evenly as possible across the supplied number of reading days and estimates time using your page-per-hour speed. Requires pages already read no higher than the total; no reading-speed assessment or calendar schedule is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"flashcard-session","name":"Flashcard session planner","description":"Estimate a review session from card count, speed and planned breaks.","url":"https://toolmoz.com/tools/flashcard-session/","category":"education","method":"Active review time = cards × seconds per card. Adds a break after each full active block except at the end of the session. Does not predict recall, spaced repetition, learning effectiveness or card difficulty; the average speed and break pattern are your assumptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"attendance-planner","name":"Attendance rate planner","description":"See current attendance and how many consecutive attended sessions reach a target.","url":"https://toolmoz.com/tools/attendance-planner/","category":"education","method":"Current attendance = attended / sessions held. Solves (attended + x)/(held + x) ≥ target for the smallest whole number of future attended sessions, assuming no further absences. A 100% target cannot be reached after any prior absence. With no held sessions, one future attended session establishes a defined attendance rate. No attendance policy or excused-absence rule is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"video-study-time","name":"Video study time calculator","description":"Estimate viewing time at a chosen playback speed with breaks.","url":"https://toolmoz.com/tools/video-study-time/","category":"education","method":"Active viewing time = original duration / playback speed. Adds a break between full viewing blocks, with no break after the final block. Excludes pauses, note-taking, adverts and rewatching. This is a time estimate, not a recommendation for learning or accessibility.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"class-group-planner","name":"Classroom group size planner","description":"Split a class into groups with a maximum size or a chosen group count.","url":"https://toolmoz.com/tools/class-group-planner/","category":"education","method":"With a maximum group size, chooses the smallest group count that respects it. With a group count, divides people as evenly as possible. Reports how many groups have each size; no empty groups are allowed. This plans sizes only; use Random groups to assign names.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"scale-drawing","name":"Scale drawing calculator","description":"Convert model or drawing measurements to real dimensions and back.","url":"https://toolmoz.com/tools/scale-drawing/","category":"education","method":"A 1:N scale means one drawing unit represents N real units. Converts the input to metres, multiplies or divides by N, then shows metric and imperial results. Assumes a uniform linear scale; area and volume scale by different powers.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"note-frequency","name":"Musical note frequency","description":"Find a note’s frequency and MIDI number with adjustable concert pitch.","url":"https://toolmoz.com/tools/note-frequency/","category":"music","method":"Uses twelve-tone equal temperament: frequency = A4 reference × 2^((MIDI note−69)/12). Accepts one sharp or flat and an explicit octave, including enharmonic octave crossings such as B#3=C4. Uses scientific pitch notation with middle C=C4 and MIDI note 60.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"MIDI note and frequency reference","url":"https://inspiredacoustics.com/en/midi_note_numbers_and_center_frequencies"}]},{"slug":"frequency-note","name":"Frequency to musical note","description":"Find the nearest equal-tempered note and its tuning offset.","url":"https://toolmoz.com/tools/frequency-note/","category":"music","method":"Continuous MIDI pitch = 69 + 12log₂(f/A4). Rounds to the nearest MIDI note 0–127 and reports the signed difference in cents, with 100 cents per semitone. Frequencies whose nearest note lies outside the MIDI range are rejected. This calculates pitch from a supplied frequency; it does not listen to a microphone.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"MIDI note and frequency reference","url":"https://inspiredacoustics.com/en/midi_note_numbers_and_center_frequencies"}]},{"slug":"musical-interval","name":"Musical interval calculator","description":"Compare two notes in semitones, octaves and frequency ratio.","url":"https://toolmoz.com/tools/musical-interval/","category":"music","method":"Uses chromatic pitch distance in twelve-tone equal temperament. Reports signed semitones, absolute octave-plus-semitone distance and frequency ratio. Interval labels describe semitone distance; enharmonic spelling can give a different diatonic interval name. Notes require octaves and must lie in MIDI range 0–127.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"note-transposer","name":"Note list transposer","description":"Move a list of octave-labelled notes by a chosen number of semitones.","url":"https://toolmoz.com/tools/note-transposer/","category":"music","method":"Adds the signed semitone offset to each parsed MIDI pitch and converts back to a canonical sharp or flat note name. Uses scientific pitch notation and MIDI range 0–127. Supports up to 1,000 notes. Canonical spellings may differ from traditional key notation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"scale-builder","name":"Musical scale builder","description":"Build a scale with correctly ordered note-letter spellings.","url":"https://toolmoz.com/tools/scale-builder/","category":"music","method":"Uses fixed semitone patterns for the selected scale and letter steps for each scale degree. Retains key-appropriate sharps, flats and double accidentals rather than simply renaming every pitch. Includes the octave above the root. Melodic minor here is the ascending form; outputs must stay in MIDI range 0–127.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Open Music Theory","url":"https://viva.pressbooks.pub/openmusictheory/"}]},{"slug":"chord-builder","name":"Chord note calculator","description":"Find the notes and frequencies of common root-position chords.","url":"https://toolmoz.com/tools/chord-builder/","category":"music","method":"Builds root-position chords from fixed semitone and diatonic letter patterns. Uses twelve-tone equal-tempered frequencies with your A4 reference, preserving chord-tone spellings including double accidentals when needed. No voicing, inversion or instrument fingering is inferred; outputs remain in MIDI range 0–127.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Open Music Theory","url":"https://viva.pressbooks.pub/openmusictheory/"}]},{"slug":"guitar-fretboard","name":"Guitar fretboard note finder","description":"List the notes across frets for your own open-string tuning.","url":"https://toolmoz.com/tools/guitar-fretboard/","category":"music","method":"Each fret raises an open string by one semitone in twelve-tone equal temperament. Accepts 1–12 octave-labelled strings in the order you supply. Lists fret 0 through your selected highest fret. This is a note table, not a fingering or chord-shape diagram; outputs stay in MIDI range 0–127.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"fret-position","name":"Instrument fret position calculator","description":"Calculate equal-tempered fret positions along a supplied scale length.","url":"https://toolmoz.com/tools/fret-position/","category":"music","method":"Distance from nut to fret n = scale length × (1−2^(−n/12)). Also shows spacing from the previous fret and remaining vibrating length. Assumes twelve-tone equal temperament and an ideal straight scale; string compensation and physical construction tolerances are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"string-tension","name":"Ideal string tension calculator","description":"Estimate tension from vibrating length, frequency and linear density.","url":"https://toolmoz.com/tools/string-tension/","category":"music","method":"For an ideal flexible string fixed at both ends, fundamental frequency f = (1/2L)√(T/µ), so T = (2Lf)²µ. Converts g/m to kg/m and reports newtons and kilogram-force equivalents. Uses supplied linear density, not diameter; stiffness, winding and setup effects are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"tempo-delay","name":"Tempo & delay time calculator","description":"Get straight, dotted and triplet note lengths for a quarter-note BPM.","url":"https://toolmoz.com/tools/tempo-delay/","category":"music","method":"One quarter note lasts 60,000/BPM milliseconds. Whole through thirty-second note lengths scale from that value. Dotted notes multiply by 1.5; triplet values multiply by 2/3. Tempo refers to quarter notes regardless of a score’s time-signature denominator.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"musical-time","name":"Bars, beats & duration","description":"Convert bars to elapsed time or elapsed time into bars and beats.","url":"https://toolmoz.com/tools/musical-time/","category":"music","method":"Quarter-note beats per bar = numerator × 4/denominator. At a constant quarter-note BPM, duration = bars × quarter-note beats per bar × 60/BPM. Reverse mode returns decimal bars and complete bars plus remaining notated beats. No tempo changes or pickup bars are inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"audio-file-size","name":"Audio file size estimator","description":"Estimate uncompressed PCM size or fixed-bitrate encoded audio size.","url":"https://toolmoz.com/tools/audio-file-size/","category":"music","method":"PCM bytes = seconds × sample rate × bits per sample × channels / 8. Encoded bytes = seconds × average kbps × 1,000 / 8. Shows decimal MB and binary MiB. Estimates audio payload only; container headers, metadata and variable-bitrate differences are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"audio-samples-time","name":"Audio samples & time","description":"Translate sample-frame counts and durations at a chosen sample rate.","url":"https://toolmoz.com/tools/audio-samples-time/","category":"music","method":"Duration = sample frames / sample rate. In the reverse direction, rounds seconds × sample rate to the nearest whole sample frame and reports the resulting quantised time. A frame contains one sample per channel, so channel count does not change elapsed time.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sample-rate-pitch","name":"Sample-rate playback change","description":"See the pitch and duration effect of reinterpreting a recording’s sample rate.","url":"https://toolmoz.com/tools/sample-rate-pitch/","category":"music","method":"Speed ratio = playback rate / original rate. Pitch change = 12log₂(ratio) semitones; new duration = original duration / ratio. Assumes the samples are reinterpreted at a different rate without pitch-preserving resampling or time-stretching. No audio file is modified.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"decibel-ratio","name":"Decibels & linear ratio","description":"Convert gain in dB to a linear amplitude or power ratio, and back.","url":"https://toolmoz.com/tools/decibel-ratio/","category":"music","method":"Power dB = 10log₁₀(power ratio). Amplitude dB = 20log₁₀(amplitude ratio), where the power relationship and impedance assumptions apply. The inverse is 10^(dB/factor). Decibels here are relative gain; no absolute dB reference or sound exposure assessment is supplied.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"DPA: decibels","url":"https://www.dpamicrophones.com/dict/db/"}]},{"slug":"sound-level-addition","name":"Add independent sound levels","description":"Combine uncorrelated sound levels measured using the same reference.","url":"https://toolmoz.com/tools/sound-level-addition/","category":"music","method":"Combined level = 10log₁₀(sum(10^(level/10))). Uses a maximum-level offset for stable arithmetic. Applies to independent or uncorrelated sources measured with the same reference and weighting. Coherent phase relationships can change the result; no exposure or hearing-safety judgement is made.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"axial-room-modes","name":"Axial room mode calculator","description":"Explore ideal axial resonances along a rectangular room’s three dimensions.","url":"https://toolmoz.com/tools/axial-room-modes/","category":"music","method":"For each room dimension L, axial frequency at order n is c×n/(2L). Lists the length, width and height families sorted by frequency. Assumes an ideal rigid rectangular room and your sound speed; tangential/oblique modes, absorption, openings and real-room behaviour are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"speaker-delay","name":"Speaker distance delay","description":"Translate a path-length difference into an acoustic alignment delay.","url":"https://toolmoz.com/tools/speaker-delay/","category":"music","method":"Travel-time difference = (farther path−nearer path)/sound speed. Reports the delay to add to the nearer path in milliseconds. Requires the farther path to be at least the nearer path. Uses geometric travel time only; phase, hardware latency and reflections are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"swing-timing","name":"Swing timing calculator","description":"Split a pair of eighth notes into a chosen long-short timing ratio.","url":"https://toolmoz.com/tools/swing-timing/","category":"music","method":"The two eighth notes together occupy one quarter-note duration. First duration = quarter duration × swing percentage; second duration is the remainder. A 50% share is straight and about 66.67% is a 2:1 triplet-like split. This defines timing mathematically; DAW swing controls can use different conventions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"polyrhythm-grid","name":"Polyrhythm timing grid","description":"See where two equal subdivisions meet across one practice cycle.","url":"https://toolmoz.com/tools/polyrhythm-grid/","category":"music","method":"Uses the least common multiple of the two pulse counts as a shared timing grid. Marks each pulse onset, beginning together at cycle time zero. Cycle duration = supplied quarter-note beats × 60/BPM. Excludes the repeated endpoint so each pulse is counted once; up to 240 grid divisions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"loudness-gain","name":"Loudness gain & peak headroom","description":"Estimate a gain-only loudness adjustment against a supplied true-peak ceiling.","url":"https://toolmoz.com/tools/loudness-gain/","category":"music","method":"Requested constant gain = target LUFS − measured LUFS. Estimated new true peak = measured peak + gain. Compares that with your ceiling and reports maximum ceiling-compatible gain. Does not measure, process or certify audio; limiting or dynamics changes require remeasurement.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"EBU: loudness and true-peak concepts","url":"https://tech.ebu.ch/loudness/"}]},{"slug":"tempo-speed-change","name":"Tempo speed-change calculator","description":"Compare tempo, duration and pitch when playback speed changes.","url":"https://toolmoz.com/tools/tempo-speed-change/","category":"music","method":"Playback speed ratio = target BPM / original BPM. New duration = original duration / ratio. Without pitch-preserving time stretching, pitch shifts by 12log₂(ratio) semitones. Shows both the time-stretch percentage and pitch consequence; no recording is modified.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"binomial-distribution","name":"Binomial probability calculator","description":"Find exact and cumulative success probabilities for independent trials.","url":"https://toolmoz.com/tools/binomial-distribution/","category":"statistics","method":"Models independent trials with a constant success probability. Shows P(X=k), P(X≤k), P(X>k) and P(X≥k), plus the model mean and standard deviation. Supports 0–10,000 trials, including p=0 or p=1. Uses numerical beta functions and log probabilities; extremely small values can underflow to zero.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"poisson-distribution","name":"Poisson probability calculator","description":"Explore event-count probabilities for a supplied average rate.","url":"https://toolmoz.com/tools/poisson-distribution/","category":"statistics","method":"Models independent events with a constant rate in a fixed interval. Shows exact, at-most, greater-than and at-least probabilities and the model mean/standard deviation. The expected count must use the same interval as k. Uses numerical gamma functions; very small probabilities may underflow.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"normal-distribution","name":"Normal interval probability","description":"Find the probability inside and outside an interval under a normal model.","url":"https://toolmoz.com/tools/normal-distribution/","category":"statistics","method":"Standardises each bound and integrates the supplied normal model. Reports probability below the lower bound, inside the interval and above the upper bound. Requires lower ≤ upper and a positive standard deviation. This does not test whether your data follow a normal distribution. Uses floating-point numerical approximations.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"normal-quantile","name":"Normal percentile value","description":"Find the value below which a chosen share of a normal distribution lies.","url":"https://toolmoz.com/tools/normal-quantile/","category":"statistics","method":"Numerically inverts the standard normal cumulative probability, then applies mean + z × standard deviation. Probability must lie strictly between 0 and 1 within the displayed bounds. A distribution percentile differs from the empirical percentile of a finite dataset.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"uniform-distribution","name":"Uniform interval probability","description":"Compare an interval with a continuous uniform distribution’s support.","url":"https://toolmoz.com/tools/uniform-distribution/","category":"statistics","method":"For a continuous uniform distribution on [a,b], probability is overlapping interval length divided by b−a. Clips interval bounds to the distribution support. Requires a<b and lower≤upper. Every point has zero probability; equal density does not make an arbitrary dataset uniform.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"exponential-distribution","name":"Exponential waiting time","description":"Estimate a waiting-time probability under a constant-rate model.","url":"https://toolmoz.com/tools/exponential-distribution/","category":"statistics","method":"For an exponential waiting time with rate λ, P(T>t)=exp(−λt), P(T≤t)=1−exp(−λt), mean=1/λ and median=ln(2)/λ. Uses expm1 for small cumulative probabilities. Assumes independent events and a constant rate; the time unit must match the rate.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"geometric-distribution","name":"Trials until first success","description":"Find the chance that the first success occurs on a particular trial.","url":"https://toolmoz.com/tools/geometric-distribution/","category":"statistics","method":"Uses the geometric convention X=number of trials through the first success, starting at 1. P(X=k)=(1−p)^(k−1)p and P(X>k)=(1−p)^k. Independent trials and constant success probability are assumed; a zero success probability has no finite waiting-time mean and is excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"hypergeometric-distribution","name":"Sampling without replacement","description":"Find success-count probabilities when drawing from a finite population.","url":"https://toolmoz.com/tools/hypergeometric-distribution/","category":"statistics","method":"Uses the hypergeometric distribution for a simple random draw without replacement. Success items and draws cannot exceed population size. Shows exact and cumulative probabilities and the feasible success-count range. Log combination weights are normalised numerically; population size is limited to 10,000.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: probability distributions","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm"}]},{"slug":"bayes-theorem","name":"Bayes probability calculator","description":"Update an event probability using evidence rates you supply.","url":"https://toolmoz.com/tools/bayes-theorem/","category":"statistics","method":"P(A|E)=P(E|A)P(A)/[P(E|A)P(A)+P(E|not A)(1−P(A))]. Reports the evidence probability and posterior. Your prior and likelihoods must refer to the same event definitions. Evidence with zero model probability is rejected; the inputs are not estimated or validated against real observations.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"event-probabilities","name":"Two-event probability calculator","description":"Work out union, neither and conditional probabilities from an intersection.","url":"https://toolmoz.com/tools/event-probabilities/","category":"statistics","method":"Requires max(0,P(A)+P(B)−1) ≤ P(A∩B) ≤ min(P(A),P(B)). Computes the union, neither, A only, B only and both conditional probabilities. A conditional probability with a zero conditioning-event probability is undefined. No independence assumption is made.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"probability-odds","name":"Probability & odds converter","description":"Translate an event probability into mathematical odds for and against.","url":"https://toolmoz.com/tools/probability-odds/","category":"statistics","method":"Odds in favour = p/(1−p); odds against = (1−p)/p. Reports probability and complementary probability alongside both ratios. At p=0 or p=1, the corresponding infinite ratio is labelled explicitly. These are mathematical odds, without fees, pricing margins or any wagering transaction.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"expected-value","name":"Discrete expected value","description":"Calculate an outcome distribution’s mean, variance and standard deviation.","url":"https://toolmoz.com/tools/expected-value/","category":"statistics","method":"Requires 1–1,000 finite numeric outcomes and non-negative probabilities summing to 1 within a tolerance of 1e−9. Normalises accepted rounding differences, then computes E[X], E[X²] via centred deviations and standard deviation. Duplicate outcome values are allowed; this calculator does not estimate probabilities.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"birthday-probability","name":"Shared birthday probability","description":"Explore the chance of a matching category in a group.","url":"https://toolmoz.com/tools/birthday-probability/","category":"statistics","method":"Probability of at least one match = 1−product(1−i/categories) for i=0…people−1, calculated with logarithms. Returns 1 when draws exceed categories. Assumes independent equally likely categories; real birthdays are seasonal and leap days are not represented by the default model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"sample-size-proportion","name":"Survey sample size estimate","description":"Plan a sample for a proportion using a supplied margin of error.","url":"https://toolmoz.com/tools/sample-size-proportion/","category":"statistics","method":"Uses the normal planning formula n₀=z²p(1−p)/e², rounded up. If population N is supplied, applies n=n₀/[1+(n₀−1)/N] before rounding, with at least one observation. Assumes simple random sampling, no non-response or design effect. This plans estimation precision, not hypothesis-test power.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"proportion-confidence-interval","name":"Wilson proportion interval","description":"Calculate a bounded confidence interval for a count out of a sample.","url":"https://toolmoz.com/tools/proportion-confidence-interval/","category":"statistics","method":"Uses the two-sided Wilson score interval with a numerically computed standard-normal critical value. Successes must be 0–sample size. Assumes independent Bernoulli observations with a common probability and an appropriate sample design. A confidence level describes repeated-sampling coverage, not a probability assigned to this fixed population parameter.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: Wilson proportion intervals","url":"https://www.itl.nist.gov/div898/handbook/prc/section2/prc241.htm"}]},{"slug":"mean-confidence-interval","name":"Confidence interval for a mean","description":"Estimate a mean interval using a sample and Student’s t distribution.","url":"https://toolmoz.com/tools/mean-confidence-interval/","category":"statistics","method":"Uses sample standard deviation (n−1), standard error s/√n and a two-sided Student t critical value with n−1 degrees of freedom. Requires at least two independent observations and a suitable normal/large-sample model; outliers or dependent data can invalidate coverage. A zero sample variance yields a degenerate interval and does not establish zero population variance.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: two-sample t tests","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm"}]},{"slug":"one-sample-t-test","name":"One-sample t test","description":"Compare a numeric sample mean with a supplied reference value.","url":"https://toolmoz.com/tools/one-sample-t-test/","category":"statistics","method":"t=(sample mean−reference)/(s/√n), with n−1 degrees of freedom and your chosen alternative. Requires at least two values and positive sample variability. Assumes independent observations and a suitable normal/large-sample model. Reports a numerical p-value; it does not measure effect importance or prove the null hypothesis.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: two-sample t tests","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm"}]},{"slug":"welch-t-test","name":"Welch two-sample t test","description":"Compare independent sample means without assuming equal variances.","url":"https://toolmoz.com/tools/welch-t-test/","category":"statistics","method":"Uses (mean₁−mean₂)/sqrt(s₁²/n₁+s₂²/n₂) and Welch–Satterthwaite degrees of freedom. Each independent sample needs at least two values and the combined standard error must be positive. Assumes suitable sampling and normal/large-sample behaviour. The directional alternative refers to first minus second; p-values do not establish causation.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: two-sample t tests","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm"}]},{"slug":"paired-t-test","name":"Paired sample t test","description":"Compare matched observations by analysing their within-pair differences.","url":"https://toolmoz.com/tools/paired-t-test/","category":"statistics","method":"Subtracts each second value from its matching first value, then performs a one-sample t test on those differences. Lists must have equal length, at least two pairs and positive difference variability. Assumes independent pairs and a suitable distribution of differences. Pair order is meaningful; no matching is inferred.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: two-sample t tests","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm"}]},{"slug":"chi-square-goodness-of-fit","name":"Chi-square goodness of fit","description":"Compare observed category counts with expected relative weights.","url":"https://toolmoz.com/tools/chi-square-goodness-of-fit/","category":"statistics","method":"Normalises positive expected weights to the observed count total, then sums (observed−expected)²/expected. Degrees of freedom = categories−1−fitted parameters. Requires at least two categories, whole non-negative observed counts and positive total count. Uses the asymptotic chi-square tail, with a warning for expected counts below 5; no automatic category pooling is performed.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: chi-square goodness of fit","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/eda35f.htm"}]},{"slug":"chi-square-independence","name":"Contingency table chi-square test","description":"Compare two categorical variables using an observed count table.","url":"https://toolmoz.com/tools/chi-square-independence/","category":"statistics","method":"First column supplies unique row labels; remaining column headers name categories. Counts must be whole and non-negative, with positive row/column totals. Computes expected counts from marginal totals, Pearson chi-square, df=(rows−1)(columns−1) and Cramér’s V. Uses an asymptotic p-value without Yates correction or an exact test; flags expected counts below 5. Assumes independent observations.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"spearman-correlation","name":"Spearman rank correlation","description":"Measure the association between two paired lists using ranks.","url":"https://toolmoz.com/tools/spearman-correlation/","category":"statistics","method":"Assigns ascending average ranks to tied values, then calculates Pearson correlation of those ranks. Requires equal list lengths, at least two observations and non-constant ranks in both lists. Reports the coefficient only; no p-value, causal conclusion or assumption of a linear relationship in the original units is supplied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"cohens-d","name":"Independent-samples effect size","description":"Compare two sample means in pooled standard-deviation units.","url":"https://toolmoz.com/tools/cohens-d/","category":"statistics","method":"Cohen’s d=(mean₁−mean₂)/pooled sample SD, with pooled variance weighted by n−1. Also reports Hedges’ g using the exact gamma-function small-sample correction J(df). Requires two independent samples of at least two values and positive pooled variance. This pooled-standardiser definition assumes a common variance scale; no universal small/medium/large judgement is applied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"geometric-mean","name":"Geometric mean calculator","description":"Average positive multiplicative values using logarithms.","url":"https://toolmoz.com/tools/geometric-mean/","category":"statistics","method":"Geometric mean = exp(mean(log(x))). Requires strictly positive values. Useful for compatible multiplicative quantities; growth percentages must first be represented as positive factors (for example, 5% becomes 1.05). Uses logarithms to avoid multiplying all values directly.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"harmonic-mean","name":"Harmonic mean calculator","description":"Average positive rates with an equal numerator basis.","url":"https://toolmoz.com/tools/harmonic-mean/","category":"statistics","method":"Harmonic mean = n/sum(1/x), for strictly positive values. It is appropriate for certain rate averages when each observation has the same numerator, such as equal-distance travel speeds. It is not the general average for unequal distances or equal travel times.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"root-mean-square","name":"Root mean square calculator","description":"Calculate the quadratic magnitude of positive and negative values.","url":"https://toolmoz.com/tools/root-mean-square/","category":"statistics","method":"RMS = sqrt(mean(x²)). Scales values by their largest absolute magnitude before squaring to avoid avoidable overflow. Reports RMS, arithmetic mean and population standard deviation, which satisfy RMS²=mean²+population variance apart from floating-point rounding.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"trimmed-mean","name":"Trimmed mean calculator","description":"Average a dataset after removing a chosen share from each end.","url":"https://toolmoz.com/tools/trimmed-mean/","category":"statistics","method":"Sorts values and removes floor(n×trim/100) observations from each tail, then takes the mean of the retained values. Reports actual counts removed and retained. This is a symmetric trimmed mean; values are removed by rank rather than by a numeric cutoff.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"median-absolute-deviation","name":"Median absolute deviation","description":"Summarise spread using deviations from the sample median.","url":"https://toolmoz.com/tools/median-absolute-deviation/","category":"statistics","method":"Raw MAD = median(|x−median(x)|). Also reports MAD multiplied by 1.4826022185, a consistency factor under a normal model, alongside the median. The adjusted value is not a universal standard-deviation estimate and a zero MAD can occur even when some observations differ.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"iqr-outliers","name":"Interquartile outlier finder","description":"List values outside configurable interquartile-range fences.","url":"https://toolmoz.com/tools/iqr-outliers/","category":"statistics","method":"Computes Q1 and Q3 by inclusive linear interpolation (type 7). Flags values strictly below Q1−multiplier×IQR or above Q3+multiplier×IQR, retaining input positions. A flag is a descriptive rule, not a reason to delete an observation. Zero IQR can flag every value different from the quartiles.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"coefficient-of-variation","name":"Coefficient of variation","description":"Compare sample spread with its positive mean on a ratio scale.","url":"https://toolmoz.com/tools/coefficient-of-variation/","category":"statistics","method":"Sample CV = sample standard deviation / positive arithmetic mean, reported as a fraction and percentage. Requires at least two values and a positive mean. Interpretation needs ratio-scale measurements with a meaningful zero; Celsius temperatures and arbitrary interval scales are unsuitable.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NIST: coefficient of variation","url":"https://www.itl.nist.gov/div898/software/dataplot/refman2/auxillar/coefvari.htm"}]},{"slug":"histogram-frequency-table","name":"Histogram frequency table","description":"Bin a numeric list into equal-width intervals with cumulative counts.","url":"https://toolmoz.com/tools/histogram-frequency-table/","category":"statistics","method":"Uses equally spaced edges from the minimum to the maximum. Bins include their lower edge and exclude their upper edge, except that the last bin includes the maximum. Constant data produce one zero-width bin. Reports counts, relative frequencies and cumulative counts without choosing an optimal binning model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"prediction-error","name":"Prediction error calculator","description":"Compare matched actual and predicted values with common error measures.","url":"https://toolmoz.com/tools/prediction-error/","category":"statistics","method":"Error is predicted−actual. Reports mean error (bias), MAE and RMSE over paired values. MAPE averages |error/actual| only over non-zero actual values and states that subset size; it is undefined if all actual values are zero. Metrics use your supplied predictions and are not out-of-sample validation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"weighted-median","name":"Weighted median calculator","description":"Find the first ordered value reaching half the total weight.","url":"https://toolmoz.com/tools/weighted-median/","category":"statistics","method":"Sorts value/weight pairs and returns the first value whose cumulative positive weight reaches at least half the total. Zero weights are ignored. Uses the lower weighted-quantile convention at an exact half-weight boundary; it does not average the two adjacent values. Equal-length lists and positive total weight are required.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"min-max-normalisation","name":"Min–max normalisation","description":"Rescale a numeric dataset into a chosen output interval.","url":"https://toolmoz.com/tools/min-max-normalisation/","category":"statistics","method":"Transforms x to lower+(x−minimum)/(maximum−minimum)×(upper−lower). Requires lower<upper and non-constant input data. Fits the minimum and maximum to this supplied dataset only; future values outside its range can lie outside the chosen interval. Retains original row positions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"standardise-values","name":"Standardise a numeric dataset","description":"Convert each observation into a dataset-based standard score.","url":"https://toolmoz.com/tools/standardise-values/","category":"statistics","method":"Subtracts the dataset mean and divides by the selected sample or population standard deviation. Requires positive variability and at least two observations for sample mode. These scores do not establish normality or percentile ranks. Reports each original position and value with its standard score.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"moving-average","name":"Moving average calculator","description":"Smooth an ordered numeric series with a complete trailing window.","url":"https://toolmoz.com/tools/moving-average/","category":"statistics","method":"For each complete trailing window, takes an unweighted arithmetic mean. Earlier positions without a full window are blank; the window cannot exceed the series length. Input order is preserved, with no date inference, missing-value imputation or prediction beyond the supplied series.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-join","name":"Join two CSV tables","description":"Match rows across two tables using a shared identifier.","url":"https://toolmoz.com/tools/csv-join/","category":"data","method":"Matches exact, case-sensitive text keys, preserving leading zeros. Duplicate matching keys produce every matching row combination; output stops at 50,000 rows. Right-hand columns are prefixed Right. with collision-safe suffixes. Left joins retain left order; full joins append unmatched right rows. Empty keys do not match by default; no numeric coercion or trimming is applied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-group-summary","name":"CSV grouped summary","description":"Summarise a numeric column separately for each category.","url":"https://toolmoz.com/tools/csv-group-summary/","category":"data","method":"Groups exact text values in first-seen order. Shows row count, non-blank numeric count, sum, mean, minimum and maximum. Blank numeric cells are ignored; other non-numeric values are rejected. Empty groups have sum zero and blank mean/min/max. All calculations stay local; up to 50,000 groups.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-deduplicate","name":"Remove duplicate CSV rows","description":"Keep the first row for each complete record or chosen key.","url":"https://toolmoz.com/tools/csv-deduplicate/","category":"data","method":"Compares exact cell text in all columns, or one chosen key column, and keeps the first occurrence in input order. Quoted commas and new lines are parsed as cell contents before comparison. Blank keys compare equal. It does not trim, change case or infer that numeric-looking IDs are equivalent.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-fill-missing","name":"Fill empty CSV cells","description":"Replace empty values across a table or in one column.","url":"https://toolmoz.com/tools/csv-fill-missing/","category":"data","method":"Replaces missing cells under your chosen exact-empty or whitespace-only rule. Applies to all columns or one selected column, without modifying headings. Literal strings such as NULL, NA and 0 are retained unless they meet that rule. Cell content remains text; export protects potential spreadsheet formulas.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-column-profile","name":"CSV column profile","description":"Inspect missing values, distinct values and numeric summaries by column.","url":"https://toolmoz.com/tools/csv-column-profile/","category":"data","method":"For each column, counts rows, whitespace-empty cells, distinct non-blank exact values and decimal numeric cells. Numeric min/max/mean use only valid finite decimal cells, with up to 100 digits of magnitude; mixed text is counted separately. Profiles describe the supplied data rather than inferring a definitive schema or changing values.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-rename-columns","name":"Rename CSV columns","description":"Apply an explicit heading map while preserving cell contents.","url":"https://toolmoz.com/tools/csv-rename-columns/","category":"data","method":"Applies the Old→New map simultaneously, allowing swaps such as A→B and B→A. Source headings must exist, each Old heading appears once, and final headings must be unique and non-empty. The mapping table uses comma-separated CSV (TSV uploads are converted locally). Data values and column order are preserved.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-wide-to-long","name":"CSV wide to long","description":"Turn measurement columns into variable/value rows.","url":"https://toolmoz.com/tools/csv-wide-to-long/","category":"data","method":"Keeps one identifier column and turns every other column into variable/value records in input row and column order. Measurement strings are preserved. Requires distinct, non-empty output headings and at least two input columns. Output is limited to 50,000 rows; blank omission tests exactly empty cells.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-long-to-wide","name":"CSV long to wide","description":"Turn identifier/variable/value records into a wider table.","url":"https://toolmoz.com/tools/csv-long-to-wide/","category":"data","method":"Creates one row per exact identifier and one column per non-empty variable name, both in first-seen order. Missing combinations are blank. Repeated pairs follow your selected reject/first/last/sum rule; sum ignores blank values and rejects non-numeric text. Requires three distinct source columns, unique generated headings and at most 200 output columns.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-concatenate","name":"Combine CSV tables","description":"Append two tables with matching headings or align a union of their columns.","url":"https://toolmoz.com/tools/csv-concatenate/","category":"data","method":"Appends rows from the second CSV after the first, aligning exact heading names rather than positions. Strict mode requires the same heading set but permits different order. Union mode keeps first-table order and appends new second-table headings. Output is limited to 50,000 rows and 200 columns; values remain text.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-row-numbers","name":"Add CSV row numbers","description":"Add a sequential identifier column without changing the original cells.","url":"https://toolmoz.com/tools/csv-row-numbers/","category":"data","method":"Prepends a new column with start + zero-based input position × increment. Allows positive, zero or negative whole-number increments. The new heading must be non-empty and not already present. Original row order and cell strings are preserved; output must remain within 200 columns.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-split-column","name":"Split a CSV column","description":"Separate a cell into several columns using a literal separator.","url":"https://toolmoz.com/tools/csv-split-column/","category":"data","method":"Splits exact literal text, without regular expressions. Creates heading.1, heading.2 and so on. If there are more parts than requested, the final column contains the unsplit remainder; fewer parts are padded with empty cells. Generated headings must be unique and output cannot exceed 200 columns.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-combine-columns","name":"Combine CSV columns","description":"Join selected cells into a new column with your chosen separator.","url":"https://toolmoz.com/tools/csv-combine-columns/","category":"data","method":"Reads a distinct list of exact column headings in your chosen order. Joins corresponding cell strings into a new final column, optionally omitting exactly empty values. Original columns remain unchanged. The new heading must be unique and non-empty; exports quote embedded commas and line breaks.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-trim-cells","name":"Clean CSV cell whitespace","description":"Trim cell edges or collapse internal whitespace without changing headings.","url":"https://toolmoz.com/tools/csv-trim-cells/","category":"data","method":"Applies JavaScript Unicode whitespace trimming to all cells or one selected column. Collapse mode also replaces each internal whitespace run, including tabs and line breaks, with one space. Headings are preserved exactly. This deliberately changes selected cell text, so keep an original copy if whitespace is significant.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-find-replace","name":"Find & replace in CSV cells","description":"Replace literal text inside selected cells while keeping the table structure.","url":"https://toolmoz.com/tools/csv-find-replace/","category":"data","method":"Replaces every literal occurrence within selected cell contents, without treating search or replacement as code or regex syntax. Can apply across all columns or a chosen column. Headings are preserved. Search text cannot be empty; matching does not normalise accents or Unicode equivalents.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-round-numbers","name":"Round a CSV numeric column","description":"Round decimal values with exact half-away-from-zero ties.","url":"https://toolmoz.com/tools/csv-round-numbers/","category":"data","method":"Rounds decimal text using integer arithmetic, with exact halfway values rounded away from zero (1.005→1.01 and −1.005→−1.01 at two places). Supports bounded decimal exponent notation. Emits fixed decimal places, keeps blank cells and leaves other columns unchanged. This numeric operation removes leading zeros in the selected column.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-unique-values","name":"Extract unique CSV values","description":"Export one column’s distinct values in first-seen or sorted order.","url":"https://toolmoz.com/tools/csv-unique-values/","category":"data","method":"Extracts exact distinct cell strings from one chosen column. Case, surrounding spaces and leading zeros remain significant. Can retain first-seen order or use English locale text sorting. Returns a single-column CSV with the original heading; no source rows are otherwise edited.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-sample-rows","name":"Sample CSV rows","description":"Choose a random subset of complete rows without replacement.","url":"https://toolmoz.com/tools/csv-sample-rows/","category":"data","method":"Uses unbiased Web Crypto integer selection and a partial Fisher–Yates shuffle to sample whole rows without replacement. The sample cannot exceed available rows. Headers are always retained. Results are random and not reproducible from a seed; no statistical representativeness is established.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-frequency-table","name":"CSV category frequency table","description":"Count exact categories and compare their shares of a selected column.","url":"https://toolmoz.com/tools/csv-frequency-table/","category":"data","method":"Counts exact cell strings in one column, with optional exclusion of whitespace-only values. Shares use the included row count as denominator. Distinct whitespace strings remain separate categories when included. Count ties retain first-seen order; percentages are descriptive and no population inference is made.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-percentage-of-total","name":"CSV percentage of total","description":"Append each numeric value’s share of its column total.","url":"https://toolmoz.com/tools/csv-percentage-of-total/","category":"data","method":"Adds 100×value/column total as a numeric percentage, without a percent sign. Blank source cells produce blank shares; other non-numeric values are rejected. Negative values are allowed, so shares can be negative or exceed 100. Requires a non-zero total and a unique new heading.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-running-total","name":"CSV running total","description":"Append a cumulative numeric total in the table’s current order.","url":"https://toolmoz.com/tools/csv-running-total/","category":"data","method":"Computes a cumulative sum in the existing row order, using compensated arithmetic to reduce cancellation error. Blank values add zero; non-numeric non-blank values are rejected. No sorting, date interpretation or group resets are performed. Original cell strings remain unchanged.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-lagged-change","name":"CSV lagged change","description":"Compare each numeric value with an earlier row in the current order.","url":"https://toolmoz.com/tools/csv-lagged-change/","category":"data","method":"Appends the difference from the row lag positions earlier and 100×difference/absolute prior value. Initial rows, blank current/prior cells and percentage changes from zero remain blank where undefined. Preserves row order and rejects other non-numeric values; no dates or groups are inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"csv-date-parts","name":"Extract CSV date parts","description":"Add calendar fields from a strict ISO date column.","url":"https://toolmoz.com/tools/csv-date-parts/","category":"data","method":"Parses non-blank dates strictly as Gregorian YYYY-MM-DD in years 0001–9999, rejecting rollover dates. Adds year, month, day, English weekday, day of year and ISO week year/week (seven fields). Blank dates yield blank parts. Calendar arithmetic uses UTC so the device time zone does not shift dates; generated headings must be unique.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"coordinate-converter","name":"Latitude & longitude format","description":"Translate signed decimal coordinates and degrees, minutes and seconds.","url":"https://toolmoz.com/tools/coordinate-converter/","category":"outdoors","method":"Converts signed decimal latitude/longitude to DMS, or parses hemisphere-labelled DMS back to signed degrees. South and west are negative. Minutes and seconds must be below 60; coordinates cannot exceed ±90 latitude or ±180 longitude. DMS display rounds to 0.001 arcseconds with carry between units. No datum transformation or location lookup is performed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"great-circle-distance","name":"Great-circle distance & bearing","description":"Compare two coordinates using a spherical Earth model.","url":"https://toolmoz.com/tools/great-circle-distance/","category":"outdoors","method":"Uses the haversine formula and a 6,371 km sphere for surface distance. Also reports miles, nautical miles, the initial true-north bearing and the great-circle midpoint. Bearings or midpoints can be undefined for coincident, polar or antipodal geometry. This is a spherical straight-across-the-surface calculation, without roads, elevation, terrain or ellipsoidal correction.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Movable Type: spherical geodesy","url":"https://www.movable-type.co.uk/scripts/latlong.html"}]},{"slug":"destination-coordinate","name":"Coordinate from distance & bearing","description":"Find a spherical destination from a starting point and initial bearing.","url":"https://toolmoz.com/tools/destination-coordinate/","category":"outdoors","method":"Moves along a great-circle arc on a 6,371 km sphere. Normalises the initial bearing and resulting longitude; distance is limited to less than half the circumference. Starting exactly at a pole is rejected because its north-reference bearing is ambiguous. No map, obstacles, terrain, magnetic declination or route guidance is supplied.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Movable Type: spherical geodesy","url":"https://www.movable-type.co.uk/scripts/latlong.html"}]},{"slug":"route-distance","name":"Coordinate route distance","description":"Add spherical leg distances along an ordered list of coordinates.","url":"https://toolmoz.com/tools/route-distance/","category":"outdoors","method":"Calculates the haversine distance between each consecutive pair, with a 6,371 km sphere. Preserves point order and shows each leg and cumulative distance. Uses exact latitude/longitude ranges and 2–5,000 points. Straight spherical legs are not road, trail or navigable route distances.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Movable Type: spherical geodesy","url":"https://www.movable-type.co.uk/scripts/latlong.html"}]},{"slug":"map-bounds-area","name":"Latitude–longitude rectangle area","description":"Estimate the spherical surface area inside geographic bounds.","url":"https://toolmoz.com/tools/map-bounds-area/","category":"outdoors","method":"Area = R² × longitude span in radians × [sin(north)−sin(south)], with R=6,371 km. Edges follow parallels and meridians. If east<west, the interval crosses the antimeridian. Equal longitudes mean zero width; west=−180 and east=180 covers all longitudes. This is not an ellipsoidal cadastral area calculation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"web-mercator","name":"Web Mercator coordinate converter","description":"Convert decimal coordinates to or from EPSG:3857 map metres.","url":"https://toolmoz.com/tools/web-mercator/","category":"outdoors","method":"Uses spherical Web Mercator x=Rλ and y=R ln(tan(π/4+φ/2)), with R=6,378,137 m, and the inverse equations. Restricts coordinates to the conventional square world map, about ±85.05112878° latitude. These projected metres are distorted map coordinates and do not directly measure ground distance.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"PROJ: Web Mercator","url":"https://proj.org/en/stable/operations/projections/webmerc.html"}]},{"slug":"horizon-distance","name":"Geometric horizon distance","description":"Estimate an unobstructed horizon from height above a spherical surface.","url":"https://toolmoz.com/tools/horizon-distance/","category":"outdoors","method":"Uses a 6,371 km spherical Earth. Straight line-of-sight distance = sqrt(h(2R+h)); surface arc distance = R×atan(line distance/R). Also reports the geometric dip angle. Ignores atmospheric refraction, terrain, visibility and the height of a target beyond the horizon.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"hiking-time","name":"Walking & ascent time planner","description":"Combine your walking pace, ascent allowance and planned breaks.","url":"https://toolmoz.com/tools/hiking-time/","category":"outdoors","method":"Adds distance/assumed pace, ascent/assumed vertical rate and planned breaks. The two movement components are additive planning allowances. Does not estimate pace from fitness, descent, terrain, weather, load or daylight; use inputs appropriate to the intended route and group.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"humidity-calculator","name":"Humidity & dew point","description":"Translate relative humidity and dew point with an over-water model.","url":"https://toolmoz.com/tools/humidity-calculator/","category":"weather","method":"Uses the NWS over-liquid-water approximation es(T)=6.11×10^(7.5T/(237.3+T)) hPa. Actual vapour pressure is RH×es/100 or es(dewpoint). Inverts the same equation for dew point and estimates absolute humidity with the ideal water-vapour gas constant 461.5 J/(kg·K). Frost and extreme cold/dry conditions need different models; dew point cannot exceed air temperature.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NWS: vapour pressure equations","url":"https://www.weather.gov/media/epz/wxcalc/vaporPressure.pdf"}]},{"slug":"vapour-pressure-deficit","name":"Vapour pressure deficit","description":"Compare air and leaf saturation pressure with actual air moisture.","url":"https://toolmoz.com/tools/vapour-pressure-deficit/","category":"weather","method":"Calculates actual air vapour pressure from relative humidity and the NWS over-water saturation equation. Air VPD = es(air)−actual; leaf-to-air vapour pressure difference = es(leaf)−actual. Reports kPa. A negative leaf difference means air vapour pressure exceeds saturation at that leaf temperature; no plant-specific target range or growing recommendation is selected.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NWS: vapour pressure equations","url":"https://www.weather.gov/media/epz/wxcalc/vaporPressure.pdf"}]},{"slug":"wind-chill","name":"Wind chill calculator","description":"Estimate the NWS wind-chill index within its stated input range.","url":"https://toolmoz.com/tools/wind-chill/","category":"weather","method":"Converts to °F and mph, then applies the NWS equation 35.74+0.6215T−35.75V^0.16+0.4275TV^0.16. Requires air temperature ≤10°C and wind greater than 3 mph. Reports the equivalent index in °C and °F, without predicting exposure duration, frostbite or individual thermal response.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NWS: wind chill formula and limits","url":"https://www.weather.gov/epz/wxcalc_windchill"}]},{"slug":"heat-index","name":"Heat index calculator","description":"Combine air temperature and humidity using the NWS calculation.","url":"https://toolmoz.com/tools/heat-index/","category":"weather","method":"Uses the NWS simple apparent-temperature estimate averaged with air temperature first. At 80°F or above, switches to the Rothfusz regression with its low/high humidity corrections. Assumes the standard shaded, light-wind context; extreme combinations can exceed the regression’s calibration. Reports the method used and does not infer an exposure limit or individual response.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"NWS: heat index equation","url":"https://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml"}]},{"slug":"wind-vector","name":"Wind direction & components","description":"Convert meteorological wind direction into east/north components, or back.","url":"https://toolmoz.com/tools/wind-vector/","category":"weather","method":"Meteorological direction describes where wind comes FROM, clockwise from true north. Eastward u=−speed×sin(direction); northward v=−speed×cos(direction). The inverse uses hypot(u,v) and atan2(−u,−v). Calm wind has undefined direction. Components are ideal vectors; no forecast or gust analysis is performed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"speed-of-sound","name":"Dry-air sound speed","description":"Estimate ideal sound speed from a supplied air temperature.","url":"https://toolmoz.com/tools/speed-of-sound/","category":"weather","method":"Uses c=sqrt(γRT) for ideal dry air, with γ=1.4, specific gas constant R=287.05 J/(kg·K) and absolute temperature T. Reports m/s, km/h and mph. Humidity, gas composition, frequency effects and real-atmosphere variation are excluded.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"exposure-value","name":"Exposure value calculator","description":"Compare photographic settings on a logarithmic stop scale.","url":"https://toolmoz.com/tools/exposure-value/","category":"design","method":"EV=log₂(f-number²/shutter seconds). The ISO-100-normalised setting value is EV−log₂(ISO/100). One EV is a factor of two in exposure-setting ratio. These are settings calculations, not a scene light measurement; lens transmission, camera calibration, flash and reciprocity effects are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Canon: aperture, shutter speed and ISO","url":"https://www.usa.canon.com/learning/training-articles/training-articles-list/canon-eos-101-photography-and-videography-basics"}]},{"slug":"equivalent-exposure","name":"Equivalent shutter exposure","description":"Keep a relative exposure while changing aperture and ISO.","url":"https://toolmoz.com/tools/equivalent-exposure/","category":"design","method":"New shutter seconds = old seconds × (new f-number/old f-number)² × (old ISO/new ISO). Reports the required shutter duration and changes in stops. Assumes a fixed scene and ideal relative exposure response; depth of field, motion blur, noise and lens transmission can still change.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Canon: aperture, shutter speed and ISO","url":"https://www.usa.canon.com/learning/training-articles/training-articles-list/canon-eos-101-photography-and-videography-basics"}]},{"slug":"nd-filter-exposure","name":"ND filter exposure calculator","description":"Translate filter stops into exposure time, factor and optical density.","url":"https://toolmoz.com/tools/nd-filter-exposure/","category":"design","method":"Each stop multiplies exposure duration by two. New time = base shutter time × 2^stops; filter factor = 2^stops; optical density = stops×log₁₀(2). Supports fractional stops. Assumes an ideal neutral filter and unchanged aperture, ISO and light; filter tolerances and film reciprocity failure are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Nikon: neutral density filters","url":"https://www.nikonusa.com/learn-and-explore/c/tips-and-techniques/using-variable-neutral-density-filters-to-adjust-exposure-in-dslr-video"}]},{"slug":"depth-of-field","name":"Depth of field & hyperfocal","description":"Explore thin-lens focus limits with a chosen blur criterion.","url":"https://toolmoz.com/tools/depth-of-field/","category":"design","method":"Uses a paraxial thin lens and a stop at the lens. Let D=f²/(N×c), focus distance s and focal length f in the same units: near=sD/(D+s−f), far=sD/(D−s+f), and hyperfocal=D+f. Far limit is infinite at or beyond hyperfocal. Requires s>f. Blur criterion is supplied by you; diffraction, aberrations, pupil magnification and real-lens focus breathing are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"University of Arizona: camera-system optics","url":"https://wp.optics.arizona.edu/jgreivenkamp/wp-content/uploads/sites/11/2018/12/201-202-17-Camera-Systems.pdf"}]},{"slug":"camera-field-of-view","name":"Camera field of view","description":"Compare sensor dimensions, focal length and approximate scene coverage.","url":"https://toolmoz.com/tools/camera-field-of-view/","category":"design","method":"For an ideal rectilinear lens, angle=2atan(sensor dimension/(2×focal length)). Approximate scene coverage is 2×distance×tan(angle/2), using a far-focus model. Also reports the diagonal crop factor and focal-length equivalent against a 36×24 mm reference. Does not model fisheye projection, distortion, focus breathing or mounting compatibility.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Edmund Optics: field of view and lens selection","url":"https://www.edmundoptics.com/knowledge-center/application-notes/imaging/how-to-choose-a-variable-magnification-lens/"}]},{"slug":"macro-extension","name":"Macro extension estimate","description":"Estimate magnification and exposure allowance from lens extension.","url":"https://toolmoz.com/tools/macro-extension/","category":"design","method":"Approximate new magnification = starting magnification + extension/focal length. For a symmetric thin lens, effective f-number=N(1+m) and exposure allowance=2log₂(1+m) stops relative to the infinity-focus marked aperture. Real lenses, internal focusing and pupil magnification can differ; no accessory compatibility is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"flash-guide-number","name":"Flash guide number calculator","description":"Relate ISO, direct-flash distance and aperture using a supplied guide number.","url":"https://toolmoz.com/tools/flash-guide-number/","category":"design","method":"ISO-adjusted guide number = GN100×sqrt(ISO/100). Suggested f-number for the supplied distance is adjusted GN/distance; distance at the supplied f-number is adjusted GN/f-number. Uses the same direct-flash beam/power conditions as the guide number you enter; bounce, diffusers and high-speed-sync losses are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Nikon SB-910: guide number relationship","url":"https://www.nikonusa.com/pdf/manuals/Speedlights/SB-910_EN.pdf"}]},{"slug":"light-distance-falloff","name":"Light distance & falloff","description":"Compare ideal point-source illumination at two distances.","url":"https://toolmoz.com/tools/light-distance-falloff/","category":"design","method":"For a point source in free space, illumination ratio=(original distance/new distance)². Reports the remaining light percentage, light change in stops and compensating exposure multiplier. Extended sources, near-field softboxes, reflections, atmosphere and beam shaping do not necessarily follow this ideal model.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"ev-charging","name":"EV charging time & cost","description":"Estimate an energy top-up using average power, efficiency and your tariff.","url":"https://toolmoz.com/tools/ev-charging/","category":"transport","method":"Battery energy added = usable capacity × charge-percentage increase. Grid energy divides by supplied efficiency; time divides grid energy by average grid power. Cost multiplies grid energy by your entered tariff. Requires target ≥ starting charge. Average power must account for taper and vehicle limits; no live tariff, charging curve, session fee or battery-health estimate is supplied.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"US Department of Energy: EV charging","url":"https://www.energy.gov/cmei/femp/articles/electric-vehicle-supply-equipment-infrastructure-federal-fleet-training"}]},{"slug":"tyre-size-comparison","name":"Tyre size comparison","description":"Compare nominal geometry and speed ratios for two metric radial sizes.","url":"https://toolmoz.com/tools/tyre-size-comparison/","category":"transport","method":"Parses metric radial width/aspect/rim sizes, with optional P or LT prefix. Sidewall=width×aspect/100; diameter=rim inches×25.4+2×sidewall; circumference=π×diameter. Compares the nominal size and geometric speed ratio. Loaded radius, actual manufacturer dimensions, speedometer calibration, load/speed ratings, clearances and vehicle approval are not assessed.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Michelin: tyre size markings","url":"https://www.michelinman.com/auto/auto-tips-and-advice/tires-101/tire-markings-explained"}]},{"slug":"wheel-offset","name":"Wheel width & offset comparison","description":"Compare nominal inner and outer rim-edge positions.","url":"https://toolmoz.com/tools/wheel-offset/","category":"transport","method":"Using nominal bead-seat width in mm, inner position=width/2+offset and outer position=width/2−offset. Reports new-minus-old changes: positive inner movement reduces nominal suspension clearance; positive outer movement extends outwards. Rim lips, tyre shape, brakes, suspension travel, spacers, handling and actual fitment are excluded.","isAccessibleForFree":true,"requiresJavaScript":true,"sources":[{"label":"Tire Rack: wheel offset","url":"https://www.tirerack.com/upgrade-garage/what-is-wheel-offset"}]},{"slug":"cycling-gears","name":"Cycling gearing calculator","description":"Relate chainring, sprocket, wheel rollout and cadence to geometric speed.","url":"https://toolmoz.com/tools/cycling-gears/","category":"transport","method":"Gear ratio=front teeth/rear teeth. Distance per crank turn=wheel circumference×ratio; speed multiplies that rollout by cadence. Gear inches use circumference/π as wheel diameter. Assumes direct chain drive without slip or internal hub gearing; tyre loading, drag, gradient and achievable rider power are not predicted.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"two-stroke-fuel-mix","name":"Two-stroke fuel mix calculator","description":"Work out oil and petrol quantities for a ratio you supply.","url":"https://toolmoz.com/tools/two-stroke-fuel-mix/","category":"home","method":"A supplied N:1 petrol-to-oil ratio means N petrol parts for each oil part. If starting with petrol P, oil=P/N; if targeting final volume V, oil=V/(N+1) and petrol=V×N/(N+1). Volumes are assumed additive. Enter the ratio required by the equipment and oil instructions; the example is not a recommendation.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"car-ownership-cost","name":"Vehicle ownership cost","description":"Combine depreciation and your running-cost assumptions over an ownership period.","url":"https://toolmoz.com/tools/car-ownership-cost/","category":"transport","method":"Total cost=purchase−resale+finance charges+years×(annual running costs+annual distance×litres/100km×fuel price). Reports total, annual, monthly and per-km cost. All prices and residual values are your assumptions in one currency; depreciation can be negative if resale exceeds purchase. Excludes any costs not entered and does not forecast resale or prices.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"pomodoro-planner","name":"Focus & break session planner","description":"Plan focus sessions with short breaks and an occasional longer break.","url":"https://toolmoz.com/tools/pomodoro-planner/","category":"planning","method":"Builds an ordered focus/break plan. After each completed group of sessions, uses the long break instead of a short break; no break is added after the final session. Reports planned elapsed minutes and total focus time. This is a schedule calculator, without a running timer or a claim about learning/productivity outcomes.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"meeting-cost","name":"Meeting cost calculator","description":"Estimate the value of attendee time using your own hourly rates.","url":"https://toolmoz.com/tools/meeting-cost/","category":"money","method":"For each role, attendee count × hourly rate × meeting minutes/60 gives a time-cost estimate. Adds the other cost you supply. Counts are non-negative whole numbers and all rates use one currency. This is an opportunity/payroll-cost model, not a wage, billing or employment entitlement determination.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"staffing-coverage","name":"Staff coverage lower bound","description":"Compare required coverage hours with productive hours per person.","url":"https://toolmoz.com/tools/staffing-coverage/","category":"planning","method":"Required person-hours=service hours×concurrent people. Available hours per person=scheduled hours×available share. Divides to get a full-time-equivalent lower bound and rounds up for whole staff. Does not construct a feasible rota, check overlapping shifts, skills, rest periods or employment rules.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"capacity-planner","name":"Work capacity planner","description":"Translate a backlog and your working-time assumptions into throughput.","url":"https://toolmoz.com/tools/capacity-planner/","category":"planning","method":"Usable minutes per resource-day=scheduled hours×60×productive share−setup minutes. Multiplies by parallel resources and divides by minutes per unit for daily capacity. Backlog/daily capacity gives fractional days and whole days rounded up. Requires positive usable time; no variability, bottlenecks, queueing or actual calendar is inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"box-fit","name":"Rectangular box fit calculator","description":"Compare uniform grid orientations of smaller boxes inside a larger box.","url":"https://toolmoz.com/tools/box-fit/","category":"planning","method":"Tests the six axis-aligned item orientations, removing duplicates. For each, multiplies floor(container dimension/item dimension) along the three axes. Shows whole-item counts using exact integer products. Every item in a tested layout has the same orientation; this is not an optimal mixed-orientation packing solver and excludes clearance, weight and stacking constraints.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"backup-storage","name":"Backup storage estimate","description":"Combine retained full and incremental payloads with supplied storage allowances.","url":"https://toolmoz.com/tools/backup-storage/","category":"files","method":"Raw payload=full backup size×copies+daily incremental size×retained days. Multiplies by supplied stored fraction, then adds the capacity allowance. Reports decimal GB/TB and binary GiB. Assumes independent retained payloads; backup-chain rules, actual deduplication, snapshots, immutability and provider billing are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"download-time","name":"File transfer time estimate","description":"Estimate a transfer duration from file size, link rate and achieved efficiency.","url":"https://toolmoz.com/tools/download-time/","category":"conversion","method":"Seconds=file bytes×8/(Mbps×1,000,000×efficiency). Distinguishes decimal MB/GB from binary MiB/GiB and bits from bytes. Uses your achieved-throughput assumption; server limits, protocol overhead, contention, setup and changing network conditions are not estimated automatically.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"print-job-cost","name":"Print job quantity & cost","description":"Count printed pages and sheets, allowing for duplex copies.","url":"https://toolmoz.com/tools/print-job-cost/","category":"design","method":"Printed pages=pages per copy×copies. Duplex sheets=ceil(pages per copy/2)×copies, keeping copies separate. Cost=physical sheets×paper cost+printed pages×ink cost+setup for a non-empty job. Time divides printed pages by supplied average speed. Excludes spoilage, warm-up, finishing, tax and duplex-speed variation not already in your assumptions.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"paper-cut-layout","name":"Paper grid cutting layout","description":"Compare portrait and rotated grid cuts with margins and gutters.","url":"https://toolmoz.com/tools/paper-cut-layout/","category":"design","method":"Usable dimensions subtract both edge margins. Grid count along an axis=floor((usable+gutter)/(piece+gutter)), so no gutter is required after the last piece. Compares two uniform orientations. Reports pieces and used-piece area; this does not optimise mixed rotations or include bleed, crop marks, grain direction or cutting-machine limits.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"weekly-time-budget","name":"Weekly time budget","description":"Add recurring activities and compare them with a 168-hour week.","url":"https://toolmoz.com/tools/weekly-time-budget/","category":"planning","method":"Weekly allocation=hours per occurrence×times per week for each activity. Reports allocation shares of 168 hours and the unallocated or over-allocated balance. Counts may be fractional averages. Does not detect overlapping activities, enforce a timetable or recommend how much time to assign to an activity.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"meeting-availability","name":"Meeting availability overlap","description":"Find shared time windows from several people’s same-day availability.","url":"https://toolmoz.com/tools/meeting-availability/","category":"planning","method":"Uses minute-resolution intervals within one common day and time zone. Start is inclusive, end exclusive; end may be 24:00. Merges overlapping windows for the same trimmed, case-sensitive name. Finds maximal windows with at least the required number of the same people continuously available. Extra people joining or leaving do not split a valid window. Overnight windows must be split into separate days; time zones and calendar dates are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"timesheet-calculator","name":"Timesheet hours calculator","description":"Add work intervals and unpaid breaks from a local CSV.","url":"https://toolmoz.com/tools/timesheet-calculator/","category":"money","method":"Calculates local wall-clock minutes between Start and End, subtracting the supplied break. An end earlier than start means one overnight interval; equal times mean zero elapsed time. Requires valid Gregorian dates and HH:MM times, with breaks no longer than the interval. Ignores time-zone/DST transitions, overtime, rounding policies and employment entitlements.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"instalment-plan","name":"Equal instalment plan","description":"Split a remaining amount into cent-exact payments with due dates.","url":"https://toolmoz.com/tools/instalment-plan/","category":"money","method":"Accepts non-negative amounts with at most two decimal places in one two-decimal currency. Divides remaining cents evenly; any extra cents are assigned to the earliest payments. Monthly dates use the first date’s day, clamped independently to each month’s end. Weekly dates add seven days. No interest, fees, business-day adjustment, contract or payment transaction is created.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"shared-expense-settlement","name":"Shared expense settlement","description":"Balance an equal-share expense pool and show suggested transfers.","url":"https://toolmoz.com/tools/shared-expense-settlement/","category":"money","method":"Adds expenses paid by named participants, then divides the total equally across everyone using exact integer cents. Extra share cents go to the earliest participants in your input order. Greedily matches debtors and creditors and lists transfers per person; this settles balances but does not guarantee the fewest transfers. Supports one two-decimal currency, non-negative costs and no actual payments.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"round-robin-scheduler","name":"Round-robin tournament schedule","description":"Create match rounds and court/time slots without double-booking a team.","url":"https://toolmoz.com/tools/round-robin-scheduler/","category":"sport","method":"Uses the circle method for 2–32 distinct teams, adding a bye for an odd count. Schedules each round in waves across the supplied courts, then applies the between-round break. A team appears at most once per round. Double mode repeats with home/away reversed. Durations are assumptions; rest, travel, seeding, venue and competition-specific constraints are not optimised.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"knockout-bracket","name":"Seeded knockout bracket","description":"Lay out a single-elimination bracket with explicit first-round byes.","url":"https://toolmoz.com/tools/knockout-bracket/","category":"sport","method":"Treats the 2–64 input names as seeds from strongest to weakest. Expands to the next power of two using reflected seed placement, assigning missing bottom seeds as first-round byes. Shows later-round winner placeholders and automatic bye advances. No results are entered or stored, and no sport’s official draw policy is claimed.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"league-standings","name":"League table calculator","description":"Build standings from match scores and points rules you provide.","url":"https://toolmoz.com/tools/league-standings/","category":"sport","method":"Uses non-negative whole scores and your whole-number win/draw/loss points. Orders teams by points, score difference and scores for; exact ties share a competition rank and are displayed alphabetically. Only teams appearing in supplied matches are included. Head-to-head, penalties, forfeits, abandoned matches and official league tie rules are not inferred.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"elo-rating","name":"Elo rating change model","description":"Explore expected scores and updates with your own scale and K factor.","url":"https://toolmoz.com/tools/elo-rating/","category":"sport","method":"Expected score=1/[1+10^((opponent−your rating)/scale)]. Change=K×(score−expected), with scores 0, 0.5 or 1. Period mode uses one baseline for all expectations; sequential mode uses the latest model rating. Opponent ratings remain supplied values. No rating floors, federation rules, provisional treatment or official rating update is applied.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"race-splits","name":"Even-pace race split planner","description":"Break a target distance and finish time into equal-pace splits.","url":"https://toolmoz.com/tools/race-splits/","category":"sport","method":"Divides the course into complete split distances plus a shorter final split if needed. Allocates time in proportion to distance so cumulative finish time equals the supplied target. Limits output to 1,000 splits. Assumes even pace; terrain, weather, aid stops, fatigue and individual performance are not modelled.","isAccessibleForFree":true,"requiresJavaScript":true},{"slug":"interval-workout","name":"Interval session planner","description":"Add work, recovery, warm-up and cooldown blocks into a session plan.","url":"https://toolmoz.com/tools/interval-workout/","category":"sport","method":"Schedules a supplied warm-up, each work interval, recovery between intervals and a supplied cooldown. No recovery is added after the final work interval. Reports all block durations and cumulative seconds. These are your timing choices, not an exercise prescription, intensity target or assessment of suitability.","isAccessibleForFree":true,"requiresJavaScript":true}]}