SyntaxFlow

Privacy

What this site collects

No account unless you want one. No cookies unless you say yes, apart from the one that keeps you signed in if you sign in. No tracking between sites. And whatever you type into a calculator is worked out in your browser and is not sent anywhere while you calculate. The calculators are static pages, and nothing typed into them is logged anywhere, by anyone. If you create an account and switch on sync, the work your tools save is copied to your account so that it is there on your other devices; without that switch it stays in this browser, as before. The account runs on a small server and a database used only for the account, sync, Pro, the news list and feedback, all described below.

The whole of what does happen is on this page. It is longer than it used to be, because an optional account means there is more to say. Last updated 5 November 2026.

What changed on 15 October 2026: this page now covers the optional account, with a username and a password, that SyntaxFlow is switching on. Until then it said "No account" and "whatever you type never leaves your browser". Both are still true if you do not create an account. If you do, If you create an account says exactly what we keep, why, where and for how long.

The part people actually care about

A calculator page loads once and then runs entirely on your machine. Sheet sizes, wind loads, spans, glass build-ups, the cutting list you paste in — all of it is computed in JavaScript in your browser and none of it is transmitted. Creating an account does not change that: calculating sends nothing. You can prove this to yourself: open your browser's network panel, fill a tool in and press everything. A few small beacons go out — one saying a page was opened, one saying a tool was used, and Microsoft Clarity's record of where the page was clicked and scrolled, with every piece of text masked — and you can inspect all of them. None carries a single value from the form. That is not a policy promise we are asking you to trust; it is a property of how the site is built, and it is visible.

The same holds for the specification sheet. It is generated and printed by your browser. We never see a copy.

What an account adds is a copy of what the tools save, never of what you type while calculating: with sync on, your projects and documents, the jobs and stock you save in the optimisers, your offcut rack and your saved schedules are sent to your account when they change. What a calculator remembers of what you last typed stays in this browser.

Cookies, and the one question we ask

By default, none. Nothing is stored on your device until you say yes. The one exception is signing in, which is something you ask for: see The account's cookie below. The two things that would set cookies are Google Analytics and Microsoft Clarity, and both are loaded with every consent signal denied, so before you touch the banner they run without storing any identifier at all.

If you press Allow, Google Analytics and Clarity set their cookies and can then recognise a return visit. If you press No, thanks, or simply ignore the banner, they stay in the denied state for good on that browser: anonymous, unlinked pings for Google, and for Clarity a new identifier on every page view, so that no two pages can be tied together.

Either way, Google is given the address of the page without anything after it: no query, no fragment. Links between the calculators carry sizes, and the page you see after paying carries the payment's reference; those stay on your side.

There is no third option hidden behind a settings page, the decline button is the same size as the accept button, and the banner does not come back to nag you. Your answer is remembered in sf.consent.v2 in local storage — one word, on your machine. If you had already answered before Clarity was added, a no was kept as a no; a yes was asked again, because it was given to Google Analytics alone.

No advertising cookies are set under any circumstance. Google's advertising signals and ad personalisation are switched off in the configuration, not merely left at their default, so consenting to analytics does not quietly enrol you in retargeting.

The account's cookie

If you sign in, the site sets one cookie, __Host-sfac, holding a random session identifier. The page's scripts cannot read it (HttpOnly), it is only sent over HTTPS (Secure), it is not sent with forms or background requests coming from other sites (SameSite) and it belongs to this site alone. It carries no information about you and is not used for analytics or advertising. It ends when you sign out, after 30 days without use, or 90 days after you signed in, whichever comes first; closing a session from your account ends it too. While you are signing in, a second, temporary cookie may be set that only protects the sign-in against forgery. Because both are strictly necessary for a service you asked for, they are not behind the banner.

What is stored in your browser

Everything the tools remember, they remember on your own machine. With sync on, part of it is also copied to your account, as described below. Here is the complete list — every key this site can write to your local storage, and what each one is for:

sf.consent.v2 "granted" or "denied" — your answer to the banner sf.consent.v1 the same answer, from before Clarity was added sf.purchase.seen.v1 the payment references already counted, so reloading the page after paying does not count the purchase twice sf.pro.v1 a flag, set only if you unlocked Pro sf.sub.v1 the date your subscription runs to sf.subscribed.v1 a flag, set if you joined the mailing list sf.visits.v1 a count of visits, used to time one notice sf.offlinetold.v1 a flag, so that notice is shown once and never again sf.nudge.v1 how many times you used a calculator here, and when the Pro reminder was last shown or turned off, so it comes rarely and never again once you say no sf.visits.a1 a count of visits, kept only if you allowed analytics cookies, to say whether a visit is the first, 2nd-4th or 5th or later sf.visit.counted (session storage) a flag so a visit is counted once sf.subref.v1 a monthly subscription's checkout reference and its last check, set only if you subscribe monthly sf.lang.off a flag, if you turned off the offer to switch language sf.units.v1 metric or imperial, if you changed the units on a calculator, so the next one opens in the same sf.role.v1 what you answered to “What do you use this for?”, one word from a closed list, so it is not asked again sf.backup.last.v1 when you last made a backup on My data sf.account.hint whether this browser was signed in, or has seen that accounts exist, and when; no name and no identifier sf.account.checked (session storage) when this tab last asked about the account sf.sync.v1 whether sync is on in this browser, and for which account (its internal number) sf.sync.device.v1 a random name for this browser, so the account can tell your devices apart sfpro.account.v1 a copy of the Pro your account has, so the tools know it with no signal; removed when you sign out sfpro.intent.v1 for half an hour, a note that you asked to pay monthly before signing in sf.px.act.v1 Purchases and Family, kept only if you allowed analytics cookies: which usage notices were already counted (the first time a case or the planner gave a useful result) and the last day you opened your cases or planner, so a return on another day is counted once; event names and dates, nothing you type. Withdraw that permission and it is deleted sf.rack.v1 your rack of offcuts — sizes and what glass they are sf.cutjob.v1 the nest the optimiser last solved sf.cutjobs.v1 jobs you saved by name sf.plandoc.v1 the reference and customer written on the plan sf.labelsize.v1 which label size you last printed sf.spec.header.v1 your company details for the specification sheet sf.spec.items.v1 the rows on that sheet sf.spec.logo.v1 your logo, as an image, if you added one sf.panel.current.v1 what you last entered in a calculator that remembers it: sf.linear.current.v1 the panel and linear optimizers, the cabinet designer, sf.furniture.current.v1 edge banding, board feet and bend allowance sf.edge.current.v1 sf.board.current.v1 sf.bend.current.v1 sf.jobs.panel.v1 jobs saved by name in the panel and linear optimizers, sf.jobs.linear.v1 and the stock you entered there sf.stock.panel.v1 sf.stock.linear.v1 sf.schedule.current.v1 the schedule checker: the schedule on screen, the ones sf.schedule.projects.v1 you saved by name, and how many free projects were used sf.schedule.free.v1 sf.quote.inbox.v1 results and lines waiting to go into a budget (from a calculator, the price list or a prepared list) sf.survey.inbox.v1 openings measured on a plan, waiting for the survey sheet sf.calcbatch.v1 the lists you made on a calculator (glass weight, thickness, U-value, balustrade): each row's inputs and results, so a list survives a reload; clearing the list deletes it sf.quotecompare.v1 the window quotes typed into the quote comparison sf.qr.v1 the text, error correction level, printed width and caption of the last QR code sf.classroom.v1 the classroom mode's settings, title, group and student list sf.reto.v1 the daily challenges you answered, whether each was right, and your streak sf.quote.open which document each document tool had open last (one key sf.survey.open … per tool: budget, survey sheet, job report, checklist, dossier, offers, plan takeoff, list preparation) sf.pack.project which project the project pack used last sf.tour.v1 (session storage) the trade and step you are on in the guided tour sf.cfg.v1.… (session storage) what a customer chose in a workshop's configurator, kept only while that tab is open

Not one of them is a cookie, and none of them is sent anywhere unless you switch on sync. The first group is settings and flags — none carries an identifier except, once you sign in and switch on sync, your account's internal number, and a flag saying "this browser has Pro" is indistinguishable from anybody else's. Nothing in the first group is ever synced. The second group is your actual work: your rack, your cutting lists, your customers' names, your logo. That is exactly the material a normal web application would upload to a server. Without an account, or with sync off, it never leaves the machine you typed it on, and we could not show it to you, hand it to anybody, or lose it in a breach, because we do not have it. With sync on, only these keys of the second group travel to your account: the optimisers' saved jobs and stock (sf.jobs.*, sf.stock.*, sf.cutjobs.v1), the rack (sf.rack.v1) and the saved schedules (sf.schedule.projects.v1), and we hold a copy of them on the terms set out in If you create an account.

You can delete the unlock from the unlock page, or clear this site's data in your browser to remove the lot. Without an account, nothing else about you exists to delete; with one, your account page downloads or deletes what it holds. Clearing this browser does not delete your account's copy.

The document tools (budgets, survey sheets, job reports, checklists, the price list, dossiers, project packs, offer comparisons and plan takeoffs) and My projects keep their work in this browser's IndexedDB database named syntaxflow: projects, documents, photos and attached files, your library of materials and services, and settings such as your company details and your price list. Like the keys above, it stays on this device unless you switch on sync, which copies it to your account, photos and attached files included; with sync on, a third database, sf-sync, keeps what sync needs to notice changes (the version of each item last in step with the account and a fingerprint of its content). My data saves all of it to a backup file on your device, restores it, or deletes it.

Photos of offcuts on the rack, if you add them, are kept only in this browser (in its internal storage, IndexedDB), reduced to 800 pixels. They are not uploaded anywhere.

Purchases and Family

Purchase cases, the messages and documents pasted or added in Family, and the events, tasks and profiles made from them are kept in this browser's IndexedDB database named sf-px, on this device. Files are read in the browser; they are not uploaded to any server unless you switch on sync, which copies cases, messages, documents and files to your account. A message pasted on one of Family's pages reaches the planner through this tab's session storage (sf.px.familia.handoff.v1), which the planner reads once and deletes. Without an account, or with sync off, nothing is synced between devices, so we cannot see, recover or delete any of it: each tool exports a case or the agenda, and deletes a case or all of its data in this browser. With sync on, the same data is also kept in your account, and deleting it in a tool deletes it from the account at the next sync. Profiles of children in Family take an alias, with no date of birth or photo. With sync on, those aliases, and anything you have pasted that mentions a child, are kept in your account too: think before adding anything about a child that you would not want kept on a server, especially about their health.

The counter described below receives from these tools what it receives on any page: an action (a case created, a calendar exported, a proposal reviewed) with the page and a closed category. Never what is typed, file names, shops, amounts, dates or aliases. Microsoft Clarity does not load on the two tools' own pages (/purchases/my-cases/, /family/planner/ and their Spanish versions) or on any page with Family's paste box. Nor does it load on the account and sign-in pages, or on the pages you come back to after paying.

If you create an account

The account is optional. Every calculator, optimiser and document tool works without one, as it always has. An account is for two things: having Pro, paid once or monthly, recognised on any device where you sign in, and keeping your work in step between your devices, if you switch sync on.

How you sign in. With a username and a password you choose. We never store your password: only a hash of it, a one-way fingerprint from which the password cannot be worked out, so we cannot tell it to you either. When you create the account you are given a recovery code; we keep only its hash too. You may also add an email address. It is optional, it is used to get you back into the account and, only when you ask, to receive a document (see "If you ask us to email you a document"), and it is stored sealed (encrypted). Account emails (a sign-in link, getting back in) are sent through Resend (see below). The recovery code still gets you back in without email.

What we keep

account your username, an internal account number, when it was created, the language you use and how much space your sync takes password a hash of it, never the password itself recovery code a hash of it, never the code itself email only if you add one: the address, sealed, and a keyed fingerprint of it, so it can be found when you ask to recover the account Google only if you choose to sign in with Google, where that is offered: Google's identifier for your Google account and the email address Google says it has verified. Not your name or your photo sessions for each device where you are signed in: when the session began, when it was last used, and a rough description of the device ("Firefox · Android") worked out from what the browser says about itself. Not the browser's full description, and never your IP address sync only if you switch it on: your projects, documents, photos and attached files, your library and price lists, the jobs, stock, rack and schedules you save in the optimisers and the schedule checker, and in Purchases and Family your cases, messages, documents, events, tasks and profiles, children's aliases included. With each item, a version number and when it changed Pro whether the account has Pro, once or monthly, the Stripe reference of that payment and the date it runs to security log sign-ins, sign-outs, sessions closed, exports and deletions: which kind of event, when, and the account's internal number; never what you wrote, your password or your email address attempt limits to slow down anyone guessing passwords, short-lived counters named after a keyed fingerprint of your IP address or of the account, never the address itself; each is overwritten when its time window ends

What we do not keep: your password or recovery code in readable form, your IP address, your name or picture from Google, your card details (those stay with Stripe), and anything you type into a calculator that the tool itself does not save.

What it is used for, and on what basis

To sign you in and keep you signed in; to keep your devices in step, when you ask for it; to recognise Pro on your account; and, if you added an email address, to help you back into the account when you ask. No newsletter, no marketing, no profiling and no advertising use. Nothing you sync is used to train any model.

Legal basis: performance of the contract you enter into when you create the account, switch on sync or subscribe, the optional email address included; our legitimate interest in keeping accounts secure, for the security log and the limits on attempts; and legal obligation, for invoices.

Who can read it

This is not end-to-end encryption. What you sync is stored so that our server can hand it back to your other devices, which means the server can read it. Connections are encrypted (HTTPS), but we will not tell you that we cannot see your data, because technically we could. What we promise instead is that we do not look: nobody opens your synced work unless you ask us to, to help with a specific problem, or the law obliges us to.

Where it is kept, and who helps us run it

These companies process data for the account on our behalf. What follows is what their own pages said when we read them in October 2026.

How long it is kept

These periods are our decisions, not periods set by law, except the last one.

account and synced data while the account exists Plan Taller files photos and files are synced only with the Plan Taller; when it ends they are kept 30 days in case you take it again, then deleted from the cloud (what is on your devices stays) something you delete gone from the account at the next sync; a marker with no content is kept for 90 days so that your other devices learn it was deleted a deleted account access ends at once and what it holds is erased straight away, files included; the security log keeps only the account's internal number on its past events, until they are 12 months old restore points the database keeps restore points for up to 30 days (Cloudflare D1 Time Travel), so erased data can survive in them up to 30 days longer sessions until you sign out, after 30 days without use, or 90 days after you signed in, whichever comes first security log 12 months from each event, then deleted attempt counters until their time window ends invoices as long as Spanish tax law requires

What you can do yourself

From your account page, without writing to anyone: see the devices where you are signed in and close any of them; switch sync off, which leaves everything in this browser and keeps the account's copy until you delete it; download everything the account holds, files included; and delete the account, which signs you out everywhere and erases what it holds as set out above. The end of a subscription never deletes your data. While a monthly subscription is running, cancel it first, so that Stripe does not go on charging an account that no longer exists.

Security, without overstating it

Your password and recovery code are kept only as hashes, and the optional email address is stored sealed. The session cookie cannot be read by the page's scripts and travels only over HTTPS. Requests that change anything are protected against cross-site forgery, sign-in attempts are limited, and our logs record that something happened, never what you wrote. No system is beyond attack. If a breach ever affects your data, we will tell you, on this site and by email if you added an address, and the Spanish data protection authority, as the law requires.

Adults only

Accounts are for adults aged 18 or over. In Family, children appear only as profiles with an alias, created by an adult, with no date of birth or photo.

If you sign up for news

If you type your email into the news box for workshops, we send you an email to confirm it. You are only signed up if you click the link in that email; if you do not, your address is deleted after 7 days.

What we keep. The address, the language of the page you signed up from, which page it was, and the dates you signed up, confirmed and unsubscribed. We do not keep your cutting list or anything you typed into the calculators.

What for. To send you a few emails a year, when there is a new tool. Every one has a one-click unsubscribe link that needs no account.

Legal basis. Your consent, given when you confirm and withdrawable whenever you like.

How long. While you stay signed up. If you unsubscribe, we keep the address marked as unsubscribed for one year, only so that we do not write to you again by mistake, and then it is deleted.

Who sends it. Resend, as our processor (see "Transfers outside the EU"). The emails are plain text: no images, no tracking pixels and no click-tracking links.

If you ask us to email you a document

If you are signed in and press "Email me this plan" on the cutting plan, we send the text of that plan to the confirmed address on your account, never to any other. To do that the text passes through our server and through Resend, which delivers it. We keep no copy of the email or its content; only a counter to stop bulk sending (at most 10 an hour per account), which resets every hour.

Legal basis. Performing the service you ask for.

If you give us feedback

After you have used a tool several times, the page may ask how it went. It is optional. If you answer, we keep what you write (up to 500 characters), the tool, the language, the date and, only if you give them, your name or your workshop's. We do not keep your email or your cutting list.

Publication. Only if you tick the box that allows it, and always after a person has reviewed it. You can ask us to remove it at any time.

Legal basis. Your consent. How long. Two years, or until you ask us to delete it.

Pages kept for when you have no signal

This site installs a service worker: a small script your browser keeps, which saves a copy of each page as you open it so the tools still run with no connection — in a stairwell, a basement, a van. The pages and their stylesheet are all it holds. It is the site's own public files, the same ones anybody can fetch; nothing you type passes through it and nothing it stores is readable by us.

It never serves you a stale page while you have signal: a page is always fetched fresh when the network is there, and the saved copy is used only when the request fails. Clearing this site's data, or unregistering the worker in your browser's settings, removes it entirely.

Analytics

These pages carry Cloudflare Web Analytics, a few hundred bytes that record that a page was viewed and how quickly it loaded. It uses no cookies, does not fingerprint your device, does not build a profile, and cannot follow you to another site. It never sees anything you type into a calculator.

What we can see from it is aggregate: how many people opened the wind-load tool this week, which country roughly, which page they arrived from, and whether the site is slow somewhere. Cloudflare's own account of how the product works is on their site.

Legal basis: our legitimate interest in knowing whether the site works and is used, which is a narrow interest served by data that does not identify you.

Google Analytics, and exactly what it records

Alongside that, the site loads Google Analytics 4, subject to the choice described above. It answers a question Cloudflare's tool cannot: not just which pages were opened, but what people did on them.

About two dozen events are recorded. Rather than print a list here that goes stale the moment a tool is added — it did exactly that, and said "four" for weeks while there were twenty-six — here is the rule, which does not change, and a link to the live list, which cannot be wrong:

what is recorded the name of an action, and the path of the page it happened on for an error only: the file and line of OUR code that failed what is not anything you typed, and anything that identifies you

So an event says the cutting optimiser was used, or a label sheet was printed on this page. Never the sheet size, the cutting list, the customer or any number on the screen. The counter is public: it returns every event name being counted and how many times, which is the whole of what is kept and is checkable by you rather than promised by us.

The counter that does not use cookies

Since August 2026 the site also counts those same events itself, without Google and without asking, because the analytics above can only group a visit into a session for the people who accept cookies, and that is a minority — leaving us guessing about everybody else.

It is allowed to run without asking for one reason: it stores nothing about you. No cookie, no identifier, no IP address, no browser, no referrer. It adds one to a number, and the number is per day, per event and per page. There is no row in it that is about a person, so there is nothing in it to identify, export or delete — which is also why you will not find a way to opt out of it: an opt-out would need to know who you are, and it does not.

Since 12 October 2026 each of those events is also kept as a row, so we can see which tools and which features are used, not only how often. A row holds the day and hour, the event, the page, and five coarse facts that still say nothing about who you are: the country (two letters, from Cloudflare's own reading of the request, the address itself is not kept), the kind of device (phone, tablet or computer, worked out from the browser's description, which is then thrown away), where the visit came from as a category (a search engine, a social network, an AI assistant, a campaign, another page of this site, another website or none; if it is another website, only its name, such as example.com, or the label of a link made for a campaign, never the address of the page), whether this browser has Pro, and, only if you accepted analytics cookies, whether this is your first visit or a later one (1, 2 to 4, 5 or more). Rows are deleted after 400 days. They are read by us only, in a report behind a password.

Each carries the page path and nothing else, except an error report, which also carries the file and line of our code that failed: a place in the code, never the error message, which could contain something you pasted. No event carries a value you typed. Nor your username, your email address or your account number: the page events do not know whether you have an account. We record that the cutting optimiser was used; we do not record the sheet size, the cutting list, the customer, or any number on the screen. That is not a setting we could turn on later and forget to tell you about — those values are never passed to the tracker in the first place, and you can read the four lines of code that do it in /assets/js/analytics.js.

Since October 2026 our server adds to the same counter a few things that only it sees, so we know whether anybody tries to pay or uses an account: that a return from Stripe was checked and what Stripe answered (paid, not paid, could not be checked), that somebody tried to restore Pro on another device and whether it worked, and, once accounts are switched on, that an account was created, that a sign-in succeeded or failed, that a password was recovered or changed, that an account was deleted, or that a device switched sync on. Each of those rows holds the day, the action and that coarse result, and nothing else: no hour, no page, no country and no device, and nothing that could tie it to you or to an account. No username, email address, card digits, payment or session reference, IP address or browser. Automated visits are not counted, and the browser's description used to tell them apart is not kept.

Calculators embedded in other websites (since October 2026). When one of our calculators is shown inside another website, in the frame that /embed/ gives, the counter receives one event, embed_view, with the calculator and the name of that website (its host, for example proveedor.es; never the address of the page; an IP address or a local name is recorded only as "private"), and tool_used when somebody changes a field. Nothing typed in the calculator is sent, no cookie is set, and neither Google Analytics nor Clarity runs inside the frame.

Google receives, as it does on any site using its tag, your IP address (truncated — IP anonymisation is on), your approximate location derived from it, your device and browser, and the referring page. Google acts as our processor for this; their terms apply, and the data goes to servers that may be outside the EEA under the transfer arrangements described below.

Legal basis: your consent, which you can withdraw at any time by clearing this site's data in your browser — after which the banner will ask again.

Microsoft Clarity, and exactly what it records

Since October 2026 the site also loads Microsoft Clarity, subject to the same choice. It draws heatmaps — where people click and how far down a page they get — and replays of how a page was used, so that we can see where a tool gets in somebody's way and fix it.

It never receives what you type, or any text from the page. The project is set to Clarity's strict masking, which replaces every piece of text with placeholders in your browser, before anything is sent. On top of that, every calculator, form, field, table and result on this site is marked to be masked, so that a mistaken change to that setting still could not send a size, a cutting list or a customer's name. What Clarity does receive is the layout of the page and the movements, clicks and scrolls on it.

what is recorded the layout of the page, with all text masked where the pointer moved, what was clicked, how far you scrolled what is not anything you typed, any text on the page, anything you print

Like any tag, Clarity also receives your IP address, your device and browser and the referring page. Microsoft acts as our processor; their privacy statement applies, and the data may go to servers outside the EEA under the transfer arrangements described below. Its cookies are set only if you press Allow; without that, it gives every page view a new identifier and keeps nothing on your device.

Legal basis: your consent, which you can withdraw at any time by clearing this site's data in your browser — after which the banner will ask again.

There is still no tag manager, no advertising pixel, no chat widget, no third-party fonts and no A/B testing tool.

Hosting

The site is served by Cloudflare Pages. The account, if you create one, also runs on Cloudflare, as described above. Like every web server in existence, Cloudflare's edge processes the IP address of the request in order to deliver the page, and keeps short-lived operational logs for security and abuse prevention. We do not have access to a per-visitor log and we do not export one. Cloudflare acts as our processor; their privacy policy governs what they do at their layer.

Legal basis: legitimate interest in serving and protecting the site.

If you pay

Payments — €29 once, or €3.99 a month on a Pro subscription started before 11 November 2026 — are handled end to end by Stripe on Stripe's own pages. We never see your card number — it does not pass through this site at any point.

What we do receive from Stripe afterwards, and hold in Stripe's dashboard rather than on any system of ours: your name, your email address, your billing address, your VAT number if you gave one, the amount, the date and the last four digits of the card. We use it for exactly three things — issuing your invoice, answering you if you write to support, and meeting Spanish tax record-keeping duties. We do not add you to a mailing list. We do not sell or share it, and there is no marketing use of it at all.

If you pay while signed in, or subscribe monthly (which needs an account), we also keep in your account the Stripe reference of the payment or subscription and the date Pro runs to, so that Pro is recognised wherever you sign in. Cancelling the monthly, changing its card and downloading its invoices happen on Stripe's own pages.

Legal basis: performance of the contract for the invoice and support, and legal obligation for the tax records, which is also why we cannot delete an invoice on request — Spanish law requires those to be kept, generally for several years, and that duty overrides an erasure request for that specific document.

Stripe processes the payment under its own terms: partly on our behalf, and for some purposes of its own as a controller. See Stripe's privacy policy.

If you withdraw. The withdrawal page keeps the email address, the product and the order number you enter, with the date, in our database in the European Union, so that we can confirm it and refund you, which is a legal obligation. They are deleted after three years.

Transfers outside the EU

Cloudflare and Stripe — and, only if they are used, Resend for emails and Google for signing in — are US-headquartered and operate globally, so some processing happens outside the European Economic Area. The account's database and file store are created in Cloudflare's EU jurisdiction; the emails we send are logged by Resend in the United States. All of them rely, according to their own documents, on the European Commission's standard contractual clauses and their published transfer frameworks for this. We have no separate arrangement of our own, and we send nothing to anyone else.

Who the controller is

For the analytics, the hosting, the accounts, what you sync and the customer records described above, the controller is Elam Uceda Herrero, trading as SyntaxFlow, Calle Fresnedillas 25, 28035 Madrid, Spain, reachable at soporte@huingenieros.com. The terms page carries the full trading identification.

Your rights

Under the GDPR you can ask us for a copy of what we hold about you, to correct it, to erase it, to restrict or object to its use, and to receive it in a portable form. Write to the support address and we will answer within a month; usually the same week. If you have an account, you can do much of this yourself from your account page: download everything it holds, and delete it.

Realistically, for most visitors the honest answer to a request will be that we hold nothing at all, because we do not. If you have bought Pro, what we hold is the Stripe record described above, minus the invoice we are obliged to keep. If you have an account, we hold what If you create an account lists, and your account page downloads all of it.

If you think we have handled your data badly, you are entitled to complain to your national supervisory authority — in Spain, the Agencia Española de Protección de Datos. We would prefer to fix it first.

Children

This is a professional tool for the glass and construction trades, with two household tools for adults, Purchases and Family. None of it is directed at children, accounts are only for people aged 18 or over, and we do not knowingly collect anything from children. The only trace of a child is what an adult enters in Family: a profile with an alias, and whatever that adult pastes, which stays in their browser unless they switch on sync.

Changes

If this page changes, the date at the top changes with it. If a change is ever material — if we started collecting something we do not collect today — it would be said plainly at the top rather than buried in a clause. The optional account is such a change, which is why it is announced at the top of this page.

A test you can run in ten seconds. Open the developer tools on any calculator page, go to the network tab, and use the tool properly — change every field, press every button, print the sheet. You will see a page-view beacon and a tool_used event, and not one request carrying a number you entered. (Signed in with sync on, you will also see the work you saved being copied to your account: that is the copy you asked for, not the calculation.) That is the policy, and it is checkable rather than promised.