Privacy
Short version: your product files never leave your device. The site keeps anonymous daily counts, and nothing else unless you send a message.
Your files
When you choose or drop a file, this page reads it with your browser and converts or checks it there, in a background thread of the page. The file, its rows and the converted output are never sent to our server or to anyone else. Closing the tab discards them. You can check this yourself: load the page, disconnect from the internet, and convert a file.
Page view counts
When a page is requested, the server adds one to a daily counter keyed by these fields, and nothing else:
- the date (day only, no time),
- the page path, without any query string (requests for pages that do not exist are counted together as "not found"),
- the referring website's host name only, for example
google.com, or "direct" when there is none, - a coarse class of visitor worked out from the browser's user-agent string: person, search engine crawler, other automated crawler (the user-agent string itself is not kept),
- a two-letter country code supplied by our hosting provider.
Because these are counters, there is no record of an individual visit. No IP address is stored, no cookies are set, and there is no fingerprinting and no third-party analytics, advertising or tracking script.
Conversion counts
When a conversion or check finishes, the page sends one small anonymous message that adds to a daily counter of: the source platform id (for example etsy), the destination id (for example shopify), a row-count range (such as 51 to 500), whether it worked, and a short code (for example PDF when someone chose a PDF, or the first Shopify or WooCommerce rule a checked file broke, such as PRICE_BLANK). A similar count is kept when a converted file is downloaded. Runs of the sample files (the "Try a sample" and "Check a sample file" buttons) and downloads of them are counted under their own names, so they are never mixed with real conversions or checks. These counts never include anything from inside your file: no product names, prices, links or descriptions.
Failure counts
When a conversion or check fails, gives no rows, or the page's own script hits an error, the same anonymous message also adds one to a daily failure counter keyed by: the page path (for example /etsy-to-shopify-csv), the step that failed, the format ids, the error code (for example NO_PRODUCTS) and a reason from a fixed list (the file was refused, no output, the output failed its own check, a script or converter error, or the sample file could not be fetched). It never includes your file, its name, anything from inside it, an error message or stack trace, your IP address or any visitor id. At most 500 different failure rows are kept a day. We use it to find and fix tools that fail on real files.
Contact form
If you send a message through the contact form, we store: the message type you chose, the text you wrote (up to 2,000 characters), the platforms if you picked them, the time, and a reply email address only if you give one. The reply address is used only to answer that message. Messages are read only by the person who runs the site and are not shared. No IP address is stored with them. To have a message you sent deleted, say so in a new message.
Rate limiting and hosting
To stop abuse of the conversion counts and the contact form, the server counts requests per IP address in short-lived memory for about a minute. That count is not written to any database or log by us. The site is hosted on Cloudflare, which processes IP addresses and other request data to deliver and protect the site, as any host does; see Cloudflare's own privacy policy for that processing. Our own request logging is turned off.
Local settings
If you switch between light and dark theme, that choice is saved in your browser's local storage on your device. It is never sent to us.
Changes
If this changes, this page will say so before the change takes effect. 14 November 2026: failure counts (above) now also record the page with the error code.