By George Curta · Last updated 2026-04-07
419/419 Tests en Cours de Passage
100% de Taux de RéussiteSuite de tests de production complète couvrant les interactions GUI, les points de terminaison API, la sécurité, les performances et la compatibilité.
Mise à niveau de l'infrastructure
Jusqu'à 467× plus rapideEn mars 2026, nous avons migré d'un VPS partagé vers un serveur dédié avec 16× plus de RAM, 5 workers analyseurs parallèles et les 48 modèles de langue.
Performances concurrentes
Le nouveau serveur gère des centaines de requêtes simultanées sur tous les services sans défaillance.
| Service | Concurrent | Succès | Moy. | RPS |
|---|---|---|---|---|
| Analyzer (spaCy) | 500 | 100% | 331 ms | 634 |
| Analyzer (12-lang mix) | 120 | 100% | 114 ms | 515 |
| Anonymizer | 1,000 | 100% | 8 ms | 1,501 |
| Structured Data | 100 | 100% | 331 ms | 144 |
| Frontend (Next.js) | 200 | 100% | 979 ms | 104 |
| Mixed Workload | 110 | 100% | 56 ms | 536 |
Vitesse du pipeline complet
Latence d'analyse + anonymisation de bout en bout sur le nouveau serveur, mesurée avec tous les modèles de langue chauds.
| Langue | Moteur | Moy. pipeline | Entités |
|---|---|---|---|
| English | spaCy | 10.2 ms | 9 |
| German | spaCy | 13.4 ms | 9 |
| French | spaCy | 10.5 ms | 10 |
| Spanish | spaCy | 7.8 ms | 9 |
| Japanese | spaCy | 9.9 ms | 6 |
| Chinese | spaCy | 13.6 ms | 5 |
| Arabic | Transformer | 12.7 ms | 7 |
| Hebrew | Stanza | 117.3 ms | 6 |
Les temps du serveur ancien incluent le pipeline de test GUI complet (Playwright + API). Les temps du serveur nouveau sont des benchmarks API uniquement avec tous les modèles chauds. L'amélioration reflète les gains réels d'infrastructure : démarrages à froid éliminés, parallélisme 5× et stockage NVMe.
13 Jalons de Test
Chaque jalon couvre un domaine fonctionnel distinct de la plateforme, de l'authentification à la compatibilité entre navigateurs.
Authentication & Session
22/22 tests
Connexion, persistance de session, profil, vérifications de santé, gardes d'authentification, déconnexion/reconnexion
PII Detection (Analyzer)
62/62 tests
Analyse de 48 langues via GUI, filtres d'entités, seuils de scores, cas limites, raccourcis clavier
Anonymizer (5 Operators)
40/40 tests
Opérateurs replace, redact, hash, mask, encrypt via API et GUI, actions rapides, multilingue
Decrypt (Roundtrip)
22/22 tests
Allers-retours chiffrer-puis-déchiffrer pour AES-256/128/192, multilingue, validation de clé, grand texte
Batch & File Upload
20/20 tests
Traitement de texte par lot, UI de téléchargement de fichier, changement d'onglet, état du traitement
Entity Management
28/28 tests
CRUD d'entités sur 3 onglets, Créateur IA, règles de validation, vérification de nettoyage
Preset Management
28/28 tests
CRUD de présets sur 3 onglets, flux d'application, règles de validation, vérification de nettoyage
Settings (10 Tabs)
42/42 tests
Les 10 onglets de paramètres : Compte, Facturation, Tokens, Sécurité, Historique, Langue, Clés de Chiffrement, Services, Développeur
API Security
35/35 tests
Points de terminaison clés, en-têtes de sécurité, politique CORS, validation des entrées, sécurité d'authentification, limitation de débit
Token Usage Monitoring
24/24 tests
Consommation de tokens par taille de texte, opérateur, langue, filtre d'entités, déchiffrement, lot, exportation CSV
Lighthouse & Quality
20/20 tests
Scores Lighthouse sur 8 pages, réactivité de viewport, accessibilité, SEO, erreurs de console, liens brisés
48 Languages + RTL
56/56 tests
Analyse pour les 48 langues, 4 vérifications de disposition RTL, changement de langue, validation de sélecteur
Cross-Browser
20/20 tests
5 pages sur Chromium, Firefox, WebKit et Mobile Chrome — zéro erreur de console
Couverture de 48 Langues
Chaque langue supportée est testée avec des échantillons PII réels. Trois types de moteurs NLP assurent une précision optimale par langue.
| Langue | Code | Moteur | Entités | Ancien serveur | Nouveau serveur | Gain de vitesse | Statut |
|---|---|---|---|---|---|---|---|
| English | en | spacy | 113 | 270 ms | 8 ms | 34× | |
| German | de | spacy | 148 | 313 ms | 7 ms | 45× | |
| Spanish | es | spacy | 104 | 1,841 ms | 6 ms | 307× | |
| French | fr | spacy | 133 | 2,327 ms | 8 ms | 291× | |
| Italian | it | spacy | 97 | 1,787 ms | 7 ms | 255× | |
| Portuguese | pt | spacy | 61 | 1,764 ms | 6 ms | 294× | |
| Dutch | nl | spacy | 122 | 2,486 ms | 6 ms | 414× | |
| Polish | pl | spacy | 70 | 1,726 ms | 8 ms | 216× | |
| Russian | ru | spacy | 41 | 2,226 ms | 6 ms | 371× | |
| Japanese | ja | spacy | 23 | 1,436 ms | 6 ms | 239× | |
| Chinese | zh | spacy | 24 | 2,554 ms | 7 ms | 365× | |
| Korean | ko | spacy | 16 | 1,305 ms | 6 ms | 218× | |
| Arabic | ar | transformer | 20 | 554 ms | 8 ms | 69× | |
| Hindi | hi | transformer | 22 | 486 ms | 7 ms | 69× | |
| Turkish | tr | spacy | 112 | 504 ms | 6 ms | 84× | |
| Romanian | ro | spacy | 122 | 1,730 ms | 6 ms | 288× | |
| Greek | el | spacy | 29 | 1,822 ms | 7 ms | 260× | |
| Croatian | hr | spacy | 67 | 989 ms | 7 ms | 141× | |
| Slovenian | sl | spacy | 64 | 1,264 ms | 7 ms | 181× | |
| Macedonian | mk | spacy | 24 | 1,259 ms | 7 ms | 180× | |
| Swedish | sv | spacy | 140 | 1,002 ms | 6 ms | 167× | |
| Danish | da | spacy | 107 | 1,910 ms | 7 ms | 273× | |
| Norwegian | nb | spacy | 109 | 1,606 ms | 7 ms | 229× | |
| Finnish | fi | spacy | 118 | 1,229 ms | 7 ms | 176× | |
| Icelandic | is | transformer | 73 | 559 ms | 8 ms | 70× | |
| Ukrainian | uk | spacy | 25 | 1,434 ms | 9 ms | 159× | |
| Lithuanian | lt | spacy | 86 | 1,601 ms | 7 ms | 229× | |
| Bulgarian | bg | stanza | 24 | 8,735 ms | 98 ms | 89× | |
| Serbian | sr | transformer | 24 | 519 ms | 8 ms | 65× | |
| Hungarian | hu | stanza | 82 | 8,141 ms | 39 ms | 209× | |
| Czech | cs | transformer | 81 | 562 ms | 8 ms | 70× | |
| Slovak | sk | transformer | 70 | 577 ms | 8 ms | 72× | |
| Latvian | lv | transformer | 83 | 526 ms | 8 ms | 66× | |
| Estonian | et | transformer | 79 | 531 ms | 8 ms | 66× | |
| Hebrew | he | stanza | 17 | 8,850 ms | 101 ms | 88× | |
| Persian | fa | transformer | 12 | 439 ms | 7 ms | 63× | |
| Vietnamese | vi | stanza | 74 | 11,282 ms | 99 ms | 114× | |
| Indonesian | id | transformer | 79 | 524 ms | 7 ms | 75× | |
| Thai | th | transformer | 20 | 521 ms | 5 ms | 104× | |
| Malay | ms | transformer | 87 | 510 ms | 7 ms | 73× | |
| Filipino | tl | transformer | 75 | 501 ms | 7 ms | 72× | |
| Bengali | bn | transformer | 18 | 455 ms | 7 ms | 65× | |
| Urdu | ur | transformer | 12 | 445 ms | 7 ms | 64× | |
| Afrikaans | af | stanza | 119 | 7,867 ms | 55 ms | 143× | |
| Swahili | sw | transformer | 68 | 526 ms | 7 ms | 75× | |
| Armenian | hy | stanza | 69 | 19,643 ms | 85 ms | 231× | |
| Catalan | ca | spacy | 100 | 3,267 ms | 7 ms | 467× | |
| Basque | eu | stanza | 82 | 783 ms | 40 ms | 20× |
Compatibilité Entre Navigateurs
5 pages critiques testées sur 4 moteurs de navigateur avec zéro erreur de console et sans débordement horizontal.
Chromium
5 sur 5 pages
Tous RéussissentFirefox
5 sur 5 pages
Tous RéussissentWebKit
5 sur 5 pages
Tous RéussissentMobile Chrome
5 sur 5 pages
Tous RéussissentTests de Sécurité
35 Tests35 tests de sécurité dédiés couvrant les points de terminaison API, les en-têtes, CORS, la validation des entrées, l'authentification et la limitation de débit.
Points de Terminaison Clés
8 tests8 tests vérifiant l'accessibilité des points de terminaison API et les codes de réponse
En-têtes de Sécurité
6 tests6 tests pour CSP, X-Frame-Options, HSTS et plus
Politique CORS
5 tests5 tests pour la gestion des requêtes inter-origines
Validation des Entrées
6 tests6 tests pour XSS, injection SQL et entrée malformée
Sécurité d'Authentification
5 tests5 tests pour contournement d'authentification et sécurité de session
Limitation de Débit
5 tests5 tests pour application de la limite de débit API et en-têtes Retry-After
Analyse d'Utilisation des Tokens
Tokens Totaux Utilisés: 76122 tests de consommation de tokens mesurant l'efficacité des coûts selon les opérations, les tailles de texte, les langues et les opérateurs.
| Opération | Caractères | Langue | Entités | Opérateur | Tokens | Temps de Réponse |
|---|---|---|---|---|---|---|
| analyze | 50 | en | 44 | N/A | 4 | 220 ms |
| analyze | 200 | en | 140 | N/A | 9 | 276 ms |
| analyze | 500 | en | 387 | N/A | 21 | 367 ms |
| analyze | 1,000 | en | 745 | N/A | 39 | 542 ms |
| analyze | 5,000 | en | 3776 | N/A | 193 | 4,398 ms |
| analyze | 10,000 | en | 7566 | N/A | 385 | 14,494 ms |
| anonymize | 160 | en | 113 | replace | 7 | 291 ms |
| anonymize | 160 | en | 113 | redact | 7 | 236 ms |
| anonymize | 160 | en | 113 | hash | 7 | 243 ms |
| anonymize | 160 | en | 113 | mask | 7 | 276 ms |
| anonymize | 160 | en | 113 | encrypt | 7 | 242 ms |
| analyze | 148 | en | 4 | lang-compare | 2 | 0 ms |
| analyze | 145 | de | 3 | lang-compare | 2 | 0 ms |
| analyze | 144 | es | 3 | lang-compare | 2 | 0 ms |
| analyze | 145 | fr | 4 | lang-compare | 2 | 0 ms |
| analyze | 136 | it | 3 | lang-compare | 2 | 0 ms |
| analyze | 145 | pt | 3 | lang-compare | 2 | 0 ms |
| analyze | 137 | nl | 3 | lang-compare | 2 | 0 ms |
| analyze | 137 | pl | 2 | lang-compare | 2 | 0 ms |
| analyze | 132 | ru | 3 | lang-compare | 2 | 0 ms |
| analyze | 84 | ja | 2 | lang-compare | 2 | 0 ms |
| analyze | 70 | zh | 2 | lang-compare | 2 | 0 ms |
| analyze | 123 | ar | 4 | lang-compare | 2 | 0 ms |
| analyze | 160 | en | 106 | PERSON only | 7 | 258 ms |
| analyze | 160 | en | 108 | PERSON+EMAIL+PHONE | 8 | 266 ms |
| analyze | 160 | en | 113 | All entities | 8 | 264 ms |
| decrypt | 342 | en | 37 | decrypt | 2 | 188 ms |
| batch-analyze | 476 | en,de,fr | 394 | N/A | 26 | 5,278 ms |
Méthodologie de Test
Notre suite de tests combine les tests Playwright au niveau GUI avec la validation API directe pour une couverture complète.
Tests GUI
L'automatisation de navigateur Playwright teste les flux de travail réels de l'utilisateur — cliquer sur les boutons, remplir les formulaires, naviguer entre les pages et vérifier la sortie visuelle.
Tests API
Les requêtes HTTP directes valident chaque point de terminaison avec des cas limites, des entrées malformées et des conditions limites que les tests GUI seuls ne peuvent pas couvrir.
Mise en Cache de Session
Les sessions authentifiées sont mises en cache et réutilisées dans les jalons, réduisant le temps d'exécution des tests tout en maintenant un comportement d'utilisateur réaliste.
Nettoyage CRUD
Chaque entité, préset et clé de chiffrement créés lors des tests est nettoyé par la suite, garantissant que les tests sont idempotents et répétables.
About this page
We update this page when our platform or the law changes.
Read our founder note for how we work.
Each change shows up in the timestamp at the top.
Related reading
- Common questions
- Glossary
- How tokens work
- Security posture
- Where we comply
- What we detect
- Case studies
- Release notes
We follow these rules
- GDPR (EU 2016/679).
- ISO/IEC 27001:2022.
- NIS2 (EU 2022/2555).
- HIPAA safe harbor under 45 CFR § 164.514(b)(2).
Our promise
We do not sell your data.
We do not train models on your text.
We store your files in Germany.
You can delete your account at any time.
You own your work.
Where we run
Our servers live in Falkenstein, Germany.
We use Hetzner. They hold ISO 27001 certification.
All data stays in the EU.
Backups run every day.
Need help?
Email support@anonym.legal.
We reply within one business day.
How we test
We run a full check suite on every release.
Each surface gets its own sweep script and report.
Human reviewers spot-check the output each week.
We track recall and precision on a labelled set.
Bad runs block the deploy.
What we never do
- We never sell your information to third parties.
- We never train models on what you upload.
- We never keep your work after you delete it.
- We never share keys with any outside firm.
- We never run ads inside the product.
Plans in plain words
We sell credits, not seats.
One credit covers one short job.
Long jobs use a few credits each.
You can top up at any time.
Unused credits roll over each month.
Read the plans page for current rates.
Who built this
A small team of engineers and lawyers built this.
We ship from Europe and work in the open.
Our founder note spells out why we started.
Where to start
- Open the web app and try a sample file.
- Learn how credits get counted.
- See current plans and limits.
- Meet the team behind the product.
How the parts fit
A browser add-on cleans text inside Chrome.
A Word plug-in handles drafts in Office.
A small desktop tool works on whole folders.
An agent protocol link feeds large models safely.
All four share one core engine and one rule set.
Words from our team
We started this work after a lunch about cookies.
One friend kept getting odd ads on her phone.
We asked why a court file leaked through a draft.
We sketched the first build on a napkin that week.
By month three we had a tiny demo for a friend.
She used it on her first case the next day.
Common questions we hear
Can the tool read scanned PDFs? Yes, with OCR.
Does it work on long files? Yes, in small chunks.
Can I roll my own rule set? Yes, save it as a preset.
Does it run offline? The desktop build runs offline.
Do you keep my files? No, the cloud build wipes after each run.
Will it learn from my work? No, we never train on inputs.
A short tour of the workflow
Upload a file or paste a snippet of prose.
Pick the entities you want gone from the draft.
Choose a method: replace, mask, hash, encrypt, or redact.
Press run and watch the side panel show each hit.
Skim the result and tweak any rule that misfired.
Save the cleaned file or send it to a teammate.