Calculations and files stay in your browser

Form inputs, G-code, restored JSON, and results are not sent to an application server. Cloudflare Web Analytics is disabled in this build; its browser beacon does not load. Optional Google Analytics 4 loads only after a separate analytics opt-in; it receives pseudonymous tool_start, tool_complete, export, and page_view events. Page views include the current and referring page URLs with query strings and fragments removed; inputs, exports, and free text are not sent. Do Not Track and Global Privacy Control suppress analytics, and the Ad privacy choices control can revoke consent. Ad-enabled deployments load advertising only after consent. The static hosting provider can still log normal page requests and IP addresses.

G-code import only reads supported text comments; it does not execute commands, inspect geometry, or upload files. Source links navigate to external websites.

Saving is optional and explicit

Save this job stores a snapshot in this browser profile. Unsaved edits are not automatically persisted. Local storage is unencrypted, visible to others using this browser profile, and not backed up to a server.

You can delete one saved job or all saved jobs after confirmation. Canceling leaves storage unchanged. Clearing this browser storage removes saved jobs but not separately downloaded files. Existing version 1 saves remain readable.

Review exports before sharing

Copy quote includes the job name, quantity, and quoted selling price, but not your internal cost breakdown. The internal print report, CSV, and JSON exports do include private costs and assumptions. JSON also contains result values and optional measured actuals.

The app never writes your current job into the page address; there is no live share-link feature. The calculator does accept validated numeric overrides from incoming query-string parameters (used by the electricity-by-state, filament, printer, and part-quote pages to prefill their own worked example), but it never reads your job name or saved data from the URL. Browser agents running with access to the page can read the input and result snapshots exposed by the app, just as they can read the form.

Optional currency conversion

The "Load exchange rates" button sends no job data anywhere; it fetches current reference rates from the keyless Frankfurter API (api.frankfurter.dev), which redistributes European Central Bank reference rates. This happens only when you click the button, uses no account or API key, and the response is used only to display a converted quote line alongside the USD figure.

Questions or corrections

Contact the operator at dheerajnamburu@gmail.com. Do not send private job files without an agreed secure process.