Privacy Policy
Last updated
This policy describes how the LaTeX Table Generator site handles data as it works today: building tables in the editor, importing files, copying and downloading code, Open in Overleaf, feedback and analytics.
Short version
- The site sets no cookies of its own.
- Everything you type, paste or import into the table editor is processed by JavaScript in your browser. Your cells, captions, labels and imported files are not uploaded to my server and are never sent to analytics.
- The current table is kept in your browser’s session storage so a reload doesn’t lose it, and a copy of your last table plus your style choices (paper, line style, header and caption settings) in its local storage, so your next visit can offer the table back. Both stay on this device; clearing this site’s data removes them.
- Open in Overleaf is the one feature that sends your table anywhere: when you press it, your browser sends the complete LaTeX document straight to Overleaf, a separate company. Nothing is sent unless you press it.
- I count page views and feature use with my own analytics under a random ID. It never includes the contents of your table. You can turn it off on this page, and browsers that send Global Privacy Control are never counted.
- A feedback message is stored only if you write one and press send.
- I don’t sell or share personal information, and I don’t use it for advertising. The site shows no ads.
Who runs the site
LaTeX Table Generator is run by an independent developer, not a company (“I”, “me” in this policy; see About). I decide what the site collects and why, so I am the controller responsible for that data. To contact me about privacy, including any of the requests under “Your rights”, use the Send feedback button on the contact page. There is no public email address.
What is collected at a glance
| What | Where it is kept | Why | How long |
|---|---|---|---|
| Table cells, settings, caption and label | Your browser: memory and session storage | To build the code and survive a reload | Until you close the tab |
| Chosen document class for the fit check | Your browser’s session storage | To keep the proof on the class you picked | Until you close the tab |
| Your last paper and style choices (line style, bold header, caption position, shading, centering, escaping, symbol conversion) | Your browser’s local storage | So your next visit starts with the choices you used | Until you clear this site’s data |
| A copy of your last table (cells, caption, label, notes) | Your browser’s local storage | So your next visit can offer it back with one click | Replaced as you work; kept until you clear this site’s data |
| Files you open in Import | Read in your browser’s memory only | To fill the table | Discarded once read |
| The LaTeX document, if you press Open in Overleaf | Overleaf | To open it as a project there | Overleaf’s own policy applies |
| Analytics events (page, feature, outcome, counts, random IDs) | My analytics database on Supabase | To see what people use and what fails | Reviewed for deletion at least once a year |
| Your analytics opt-out choice | Your browser’s local storage | To remember that you turned analytics off | Until you clear this site’s data |
| Feedback message, website domain, page path | My feedback database on Supabase | To read and act on your message | Until dealt with; reviewed at least once a year |
| IP address for the feedback limit | The feedback service on Supabase | To limit spam | Only for the rate-limit check |
| Request logs (IP address, browser, time, page requested) | Vercel and Supabase | Delivering pages, security, fixing faults | Each provider’s log retention |
The tables you make
The editor, the code generator, the typeset proof and the fit check all run in your browser. When you type in a cell, paste cells from a spreadsheet, paste LaTeX or Markdown, or open a CSV, TSV, TXT, TEX or MD file in Import, the text is read by the page and stays on your device. Opening a file gives the page access to that one file only; it is read once and not kept. The page makes no network request containing your cells, caption, label or file contents.
So that a reload doesn’t wipe your work, the current table and its settings are saved in your browser’s session storage under latex-table-generator:table, and the document class you chose for the fit check under latex-table-generator:class. Session storage belongs to the open tab: it is deleted when you close the tab and is never sent to my server. The example table shown on a first visit is not saved.
So your next visit starts with the same choices, the last document class, line style, bold-header, caption-position, shading, centering, escaping and symbol settings you chose are kept in your browser’s local storage under latex-table-generator:prefs. A copy of your last table is kept there too, under latex-table-generator:last: on your next visit the editor still opens on the example and offers “Restore it”, and nothing is loaded unless you press it. Both stay on this device, are never sent to my server, and are replaced as you work or removed when you clear this site’s data. On a shared computer, clear this site’s data when you are done.
The Copy buttons put text on your clipboard and Download .tex saves a file to your device. None of them sends the code or your table over the network; each records only an analytics event that it happened, as listed under Analytics. The fonts used by the site and the preview (Computer Modern, Source Sans 3, Tinos, Libertinus Serif and the KaTeX math fonts) are bundled into the site and served from my domain, so your browser doesn’t contact Google Fonts or any other font service.
Open in Overleaf
Open in Overleaf uses the form Overleaf publishes for this purpose. When you press the button, your browser opens a new tab and posts the complete document shown under Full document (your table, the preamble lines and the document class) to www.overleaf.com/docs. The request goes directly from your browser to Overleaf; it does not pass through my server. Overleaf receives the document along with your IP address and browser details, may ask you to sign in or create an account, and handles the project under its own privacy policy. If your table contains anything you don’t want Overleaf to have, copy the code instead.
Feedback you send
The Give feedback and Send feedback buttons open a short form. Nothing is sent while you type. Only if you press send, these details go to my feedback service, which runs on Supabase, and are stored so I can read and handle the message:
- the message you wrote, exactly as you wrote it;
- this website’s domain and the path of the page you were on, without any query string or
#part.
Your table is not attached. The form doesn’t ask for your name or email. If you want a reply, include a way to reach you in the message; I will use it only to answer you. To limit spam, the feedback service caps how many messages one network can send per hour, so it processes your IP address to apply that limit. Please don’t include passwords, keys, payment details or other sensitive information in a message. If a table goes wrong and you want to show me, paste only the part needed to reproduce the problem.
Analytics
I run my own analytics service, hosted on Supabase, to learn which features people use and where the site fails. It is not Google Analytics and it is not shared with any advertising network. It records:
- page views, with the page path only (nothing after
?or#); - time on the page and how far you scrolled;
- clicks on labelled buttons and controls, such as Import, Merge, the column menu or a fit option;
- the outcome of the main actions, with a short code and a count: copying the table code, the full document or the preamble (with the number of lines), a copy the browser blocked, downloading the .tex file, pressing Open in Overleaf, importing or pasting a table (how it arrived, such as paste, dialog or latex, and the number of cells), pasting a block of cells or creating a new empty table (with the number of cells), merging cells (how many), opening an example (which one, such as results or grouped), and applying a fit option (which one, such as Span both columns);
- a random visitor ID, a random session ID and the time.
It does not record the contents of your cells, captions, labels or files, the generated code, the text of feedback, your name, your email or anything else that identifies you, and it doesn’t store your IP address as a way to identify you. The visitor ID is kept in your browser’s local storage and the session ID in session storage, both under keys starting with wa_. They are random, are not linked to any account and are not used on other websites.
The analytics script is loaded from my Supabase project on every page, so Supabase receives your IP address and browser details when your browser fetches the script, as any web server does, even if you have turned analytics off. There is no consent banner: analytics is limited to the items above, is used only to improve this site, and can be switched off here at any time.
Turning analytics off stops all events and deletes the wa_ IDs from this browser. Your choice is saved in local storage under latex-table-generator:analytics-off, so it applies only to this browser on this device. If you clear this site’s data, the choice is cleared too.
Cookies and browser storage
The site sets no cookies of its own. It uses your browser’s storage as listed below, and you can clear all of it at any time in your browser’s settings.
| Key | Type | Purpose |
|---|---|---|
latex-table-generator:table | Session storage | Your current table and settings, so a reload keeps them; cleared when the tab closes |
latex-table-generator:class | Session storage | The document class chosen for the fit check |
wa_… (visitor ID) | Local storage | Random analytics visitor ID |
wa_… (session ID) | Session storage | Groups one visit’s events; cleared when the tab closes |
latex-table-generator:prefs | Local storage | Your last paper (document class) and style choices, so the next visit starts with them |
latex-table-generator:last | Local storage | A copy of your last table, offered back on your next visit (“Restore it”) |
latex-table-generator:analytics-off | Local storage | Remembers that you turned analytics off |
Hosting and server logs
The site is hosted on Vercel. Like any web host, Vercel processes your IP address, browser details, the time and the page requested in order to deliver pages, keep the service secure and diagnose faults, and keeps request logs for its own retention period. Because the table editor runs in your browser, those logs contain page requests, not your tables.
Service providers and transfers
- Vercel: hosting.
- Supabase: the analytics service and the feedback service, as my processor.
Overleaf is not my provider: it receives data only when you press Open in Overleaf, and it acts on its own account. These providers may process data in the United States and other countries outside your country. Where data protection law requires it, transfers rely on the providers’ standard contractual clauses or similar safeguards.
Why the data may be used
Where the GDPR or a similar law applies, the legal basis is legitimate interest: running the site, keeping it secure, understanding which features are used and what fails so it can be fixed, and answering feedback. Feedback is sent only when you choose to send it, and a document goes to Overleaf only when you press the button. I balance these interests against yours by collecting the minimum listed here and by letting you turn analytics off.
Sharing and selling
I don’t sell personal information, rent it or share it for targeted advertising, and I don’t combine it with data from other sources. Apart from the service providers above, I would disclose information only if the law required it, to protect the site or its users from fraud or abuse, or as part of a transfer of the site to a new owner, who would stay bound by this policy for data collected under it.
How long data is kept
- Your table and chosen document class: in the tab’s session storage until you close the tab. A copy of your last table: in your browser’s local storage, replaced as you work on a table, until you clear this site’s data. Your paper and style choices: there too, until you change them or clear this site’s data. I never receive any of them.
- Files opened in Import: only while they are read.
- The analytics visitor ID and your opt-out choice: in your browser until you clear this site’s data. The session ID: until you close the tab.
- Analytics events: only as long as they help me improve the site, reviewed for deletion at least once a year. There is no automatic deletion schedule. I may keep totals with no IDs in them, such as page views per day, for longer.
- Feedback messages: until they have been dealt with, and reviewed for deletion at least once a year.
- Hosting logs: Vercel’s and Supabase’s retention periods.
Security
The site is served only over HTTPS and sets standard security headers. Tables are never transmitted to my server. Analytics events and feedback are written through narrow interfaces that accept new records but don’t let a visitor read anyone else’s data, and access to the stored data is limited to the person who runs the site. No system is perfectly secure.
Your rights
Depending on where you live, for example under the GDPR, the UK GDPR or US state privacy laws, you may have the right to ask whether I hold information about you, to get a copy of it, to have it corrected or deleted, to restrict or object to how I use it, and to withdraw a choice you made. You won’t be treated differently for using these rights.
To make a request, use the feedback form and say what you want. Because I don’t collect names or accounts, I can usually only find a feedback message if you tell me roughly what it said and when you sent it, and I can only find analytics events if you give me the visitor ID from your browser’s storage (the wa_ key). Turning analytics off is the quickest way to stop further collection. I act on requests within one month; include a way to reach you if you want a written answer. If you are in the EEA or the UK, you can also complain to your local data protection authority.
US state privacy laws
Since the site launched in November 2026 I have collected, as described above, internet activity on this site (analytics events and server logs) and the content of feedback messages people chose to send. I have not sold personal information or shared it for cross-context behavioral advertising, and I don’t use or disclose sensitive personal information. Residents of California and other states with similar laws can make the requests described under “Your rights”.
Global Privacy Control and Do Not Track
If your browser sends a Global Privacy Control signal, the analytics script doesn’t record anything and there is no setting to change. There is no common standard for responding to the older Do Not Track signal. I don’t track you across other sites, so there is nothing for it to switch off, and you can still turn analytics off above.
Children
The site is a general-audience tool for writing LaTeX. It is not aimed at children, and I don’t knowingly collect personal information from children under 13 (or under 16 in the EEA and the UK). If you believe a child has sent me personal information in a feedback message, tell me and I will delete it.
Links to other sites
The home page links to package documentation on CTAN and GitHub and to Overleaf. Those sites have their own privacy policies, which apply once you follow a link or use Open in Overleaf.
Changes to this policy
I will update this page, and the date at the top, whenever the way the site handles data changes. If a change means collecting something new, it will be described here before it starts. Questions about this policy can go through the contact page.