If you've ever done a 23andMe, AncestryDNA or MyHeritage test, you're sitting on a plain-text file with hundreds of thousands of your own genetic markers. Most people never open it — and the tools that read it usually want you to upload your genome to their servers. After the 23andMe bankruptcy and asset sale, a lot of us are (rightly) more careful about that.
Here's the thing: you don't need to upload anything. A DNA raw-data file is just text, and modern browsers can read it entirely on your own device. Let me show you how that works — and how to verify nothing leaves your machine.
What's actually in the file
Unzip your export and you'll find a tab-separated text file that looks like this:
# rsid chromosome position genotype
rs4988235 2 136608646 AA
rs1801133 1 11856378 GG
...
Each row is a SNP: an rsid (the marker's ID), where it sits on the genome, and your genotype (the two alleles you carry). That's it — no magic, just a big lookup table of ~600k–700k markers.
Reading it in the browser (no server involved)
The browser's FileReader / Blob.text() API reads a local file into memory without any network request:
const input = document.querySelector('input[type=file]');
input.addEventListener('change', async () => {
const text = await input.files[0].text(); // read locally — no upload
const snps = new Map();
for (const line of text.split('\n')) {
if (line.startsWith('#') || !line.trim()) continue;
const [rsid, chr, pos, genotype] = line.split('\t');
snps.set(rsid, genotype);
}
// now look up any marker you care about — e.g. lactase persistence:
console.log('rs4988235:', snps.get('rs4988235'));
});
input.files[0].text() never touches the network. You can parse the whole file, look up any marker, and render results — all client-side.
How to verify nothing is uploaded
Don't take anyone's word for it (including mine). Open DevTools → Network tab, filter by Fetch/XHR, then load your file into the tool. If it's processing locally, you'll see zero requests carrying your data. That's the entire trust model — verifiable in about ten seconds.
What you can actually look up
Once you have the rsid → genotype map, you can check well-studied variants, for example:
- rs4988235 (near LCT) — lactase persistence: can you digest milk as an adult?
- rs1801133 (MTHFR C677T) — folate metabolism
- rs671 (ALDH2) — the alcohol-flush variant
- rs1815739 (ACTN3) — the so-called "sprint gene"
One caution: consumer genotyping isn't clinical sequencing, and a single SNP is rarely destiny. Treat this as educational, not medical advice.
A ready-made version
If you'd rather not write the parser, I've been using Quanome's free DNA Explorer — it does exactly this (23andMe / AncestryDNA / MyHeritage, in-browser, nothing uploaded) and explains common trait, health and pharmacogenomic variants in plain language. No signup. Open the Network tab and you'll see it never phones home.
Either way — write it yourself or use a tool — the point stands: your genome is a local text file, and reading it shouldn't mean handing it to another company.
Top comments (0)