By George Curta · Last updated 2026-04-07
基础设施升级
最高提速467倍2026年3月,我们从共享VPS迁移到专用服务器。内存增加16倍,5个并行分析器工作进程,全部48个语言模型预加载。消除冷启动。每种语言都在毫秒级响应。
并发性能
新服务器可以跨所有服务处理数百个并发请求,零失败。
| 服务 | 并发 | 成功 | 平均 | 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 |
完整管道速度
新服务器上的端到端分析+匿名化延迟,在所有语言模型预热状态下测量。
| 语言 | 引擎 | 管道平均 | 实体 |
|---|---|---|---|
| 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 |
旧服务器时间包含完整的GUI测试管道(Playwright + API)。新服务器时间是所有模型预热状态下的API基准。改进反映了真实的基础设施收益:消除冷启动、5倍并行化和NVMe存储。
13 个测试里程碑
每个里程碑涵盖平台的独特功能领域,从身份验证到跨浏览器兼容性。
Authentication & Session
22/22 测试
登录、会话持久性、个人资料、健康检查、认证守卫、注销/重新登录
PII Detection (Analyzer)
62/62 测试
通过 GUI 进行 48 语言分析、实体过滤器、分数阈值、边界情况、键盘快捷键
Anonymizer (5 Operators)
40/40 测试
通过 API 和 GUI 替换、编辑、哈希、掩盖、加密运算符、快速操作、多语言
Decrypt (Roundtrip)
22/22 测试
AES-256/128/192 的加密然后解密轮次、多语言、密钥验证、大文本
Batch & File Upload
20/20 测试
批量文本处理、文件上传 UI、制表符切换、处理状态
Entity Management
28/28 测试
跨 3 个选项卡的实体 CRUD、AI 创建者、验证规则、清理验证
Preset Management
28/28 测试
跨 3 个选项卡的预设 CRUD、应用流程、验证规则、清理验证
Settings (10 Tabs)
42/42 测试
所有 10 个设置选项卡:账户、账单、令牌、安全、历史、语言、加密密钥、服务、开发者
API Security
35/35 测试
核心端点、安全标头、CORS 政策、输入验证、身份验证安全、速率限制
Token Usage Monitoring
24/24 测试
按文本大小、运算符、语言、实体过滤器、解密、批次、CSV 导出的令牌消耗
Lighthouse & Quality
20/20 测试
8 个页面的 Lighthouse 分数、视口响应能力、可访问性、SEO、控制台错误、断开的链接
48 Languages + RTL
56/56 测试
所有 48 种语言的分析、4 项 RTL 布局检查、语言切换、选择器验证
Cross-Browser
20/20 测试
跨 Chromium、Firefox、WebKit 和移动 Chrome 的 5 个页面 — 无控制台错误
48 语言覆盖
每种支持的语言都通过真实 PII 样本进行测试。三种 NLP 引擎类型确保每种语言的最佳准确性。
| 语言 | 代码 | 引擎 | 实体 | 旧服务器 | 新服务器 | 速度提升 | 状态 |
|---|---|---|---|---|---|---|---|
| English | en | spacy | 113 | 270 毫秒 | 8 毫秒 | 34× | |
| German | de | spacy | 148 | 313 毫秒 | 7 毫秒 | 45× | |
| Spanish | es | spacy | 104 | 1,841 毫秒 | 6 毫秒 | 307× | |
| French | fr | spacy | 133 | 2,327 毫秒 | 8 毫秒 | 291× | |
| Italian | it | spacy | 97 | 1,787 毫秒 | 7 毫秒 | 255× | |
| Portuguese | pt | spacy | 61 | 1,764 毫秒 | 6 毫秒 | 294× | |
| Dutch | nl | spacy | 122 | 2,486 毫秒 | 6 毫秒 | 414× | |
| Polish | pl | spacy | 70 | 1,726 毫秒 | 8 毫秒 | 216× | |
| Russian | ru | spacy | 41 | 2,226 毫秒 | 6 毫秒 | 371× | |
| Japanese | ja | spacy | 23 | 1,436 毫秒 | 6 毫秒 | 239× | |
| Chinese | zh | spacy | 24 | 2,554 毫秒 | 7 毫秒 | 365× | |
| Korean | ko | spacy | 16 | 1,305 毫秒 | 6 毫秒 | 218× | |
| Arabic | ar | transformer | 20 | 554 毫秒 | 8 毫秒 | 69× | |
| Hindi | hi | transformer | 22 | 486 毫秒 | 7 毫秒 | 69× | |
| Turkish | tr | spacy | 112 | 504 毫秒 | 6 毫秒 | 84× | |
| Romanian | ro | spacy | 122 | 1,730 毫秒 | 6 毫秒 | 288× | |
| Greek | el | spacy | 29 | 1,822 毫秒 | 7 毫秒 | 260× | |
| Croatian | hr | spacy | 67 | 989 毫秒 | 7 毫秒 | 141× | |
| Slovenian | sl | spacy | 64 | 1,264 毫秒 | 7 毫秒 | 181× | |
| Macedonian | mk | spacy | 24 | 1,259 毫秒 | 7 毫秒 | 180× | |
| Swedish | sv | spacy | 140 | 1,002 毫秒 | 6 毫秒 | 167× | |
| Danish | da | spacy | 107 | 1,910 毫秒 | 7 毫秒 | 273× | |
| Norwegian | nb | spacy | 109 | 1,606 毫秒 | 7 毫秒 | 229× | |
| Finnish | fi | spacy | 118 | 1,229 毫秒 | 7 毫秒 | 176× | |
| Icelandic | is | transformer | 73 | 559 毫秒 | 8 毫秒 | 70× | |
| Ukrainian | uk | spacy | 25 | 1,434 毫秒 | 9 毫秒 | 159× | |
| Lithuanian | lt | spacy | 86 | 1,601 毫秒 | 7 毫秒 | 229× | |
| Bulgarian | bg | stanza | 24 | 8,735 毫秒 | 98 毫秒 | 89× | |
| Serbian | sr | transformer | 24 | 519 毫秒 | 8 毫秒 | 65× | |
| Hungarian | hu | stanza | 82 | 8,141 毫秒 | 39 毫秒 | 209× | |
| Czech | cs | transformer | 81 | 562 毫秒 | 8 毫秒 | 70× | |
| Slovak | sk | transformer | 70 | 577 毫秒 | 8 毫秒 | 72× | |
| Latvian | lv | transformer | 83 | 526 毫秒 | 8 毫秒 | 66× | |
| Estonian | et | transformer | 79 | 531 毫秒 | 8 毫秒 | 66× | |
| Hebrew | he | stanza | 17 | 8,850 毫秒 | 101 毫秒 | 88× | |
| Persian | fa | transformer | 12 | 439 毫秒 | 7 毫秒 | 63× | |
| Vietnamese | vi | stanza | 74 | 11,282 毫秒 | 99 毫秒 | 114× | |
| Indonesian | id | transformer | 79 | 524 毫秒 | 7 毫秒 | 75× | |
| Thai | th | transformer | 20 | 521 毫秒 | 5 毫秒 | 104× | |
| Malay | ms | transformer | 87 | 510 毫秒 | 7 毫秒 | 73× | |
| Filipino | tl | transformer | 75 | 501 毫秒 | 7 毫秒 | 72× | |
| Bengali | bn | transformer | 18 | 455 毫秒 | 7 毫秒 | 65× | |
| Urdu | ur | transformer | 12 | 445 毫秒 | 7 毫秒 | 64× | |
| Afrikaans | af | stanza | 119 | 7,867 毫秒 | 55 毫秒 | 143× | |
| Swahili | sw | transformer | 68 | 526 毫秒 | 7 毫秒 | 75× | |
| Armenian | hy | stanza | 69 | 19,643 毫秒 | 85 毫秒 | 231× | |
| Catalan | ca | spacy | 100 | 3,267 毫秒 | 7 毫秒 | 467× | |
| Basque | eu | stanza | 82 | 783 毫秒 | 40 毫秒 | 20× |
跨浏览器兼容性
5 个关键页面在 4 个浏览器引擎中进行测试,无控制台错误和水平溢出。
Chromium
5 共 5 页
全部通过Firefox
5 共 5 页
全部通过WebKit
5 共 5 页
全部通过Mobile Chrome
5 共 5 页
全部通过安全测试
35 个测试35 个专用安全测试,涵盖 API 端点、标头、CORS、输入验证、身份验证和速率限制。
核心端点
8 tests8 个测试验证 API 端点可访问性和响应代码
安全标头
6 tests针对 CSP、X-Frame-Options、HSTS 等的 6 个测试
CORS 政策
5 tests跨源请求处理的 5 个测试
输入验证
6 tests针对 XSS、SQL 注入和格式不正确的输入的 6 个测试
身份验证安全
5 tests针对身份验证绕过和会话安全的 5 个测试
速率限制
5 tests针对 API 速率限制实施和 Retry-After 标头的 5 个测试
令牌使用分析
使用的令牌总数: 76122 个令牌消耗测试,衡量操作、文本大小、语言和运算符的成本效率。
| 操作 | 字符 | 语言 | 实体 | 运算符 | 令牌 | 响应时间 |
|---|---|---|---|---|---|---|
| analyze | 50 | en | 44 | N/A | 4 | 220 毫秒 |
| analyze | 200 | en | 140 | N/A | 9 | 276 毫秒 |
| analyze | 500 | en | 387 | N/A | 21 | 367 毫秒 |
| analyze | 1,000 | en | 745 | N/A | 39 | 542 毫秒 |
| analyze | 5,000 | en | 3776 | N/A | 193 | 4,398 毫秒 |
| analyze | 10,000 | en | 7566 | N/A | 385 | 14,494 毫秒 |
| anonymize | 160 | en | 113 | replace | 7 | 291 毫秒 |
| anonymize | 160 | en | 113 | redact | 7 | 236 毫秒 |
| anonymize | 160 | en | 113 | hash | 7 | 243 毫秒 |
| anonymize | 160 | en | 113 | mask | 7 | 276 毫秒 |
| anonymize | 160 | en | 113 | encrypt | 7 | 242 毫秒 |
| analyze | 148 | en | 4 | lang-compare | 2 | 0 毫秒 |
| analyze | 145 | de | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 144 | es | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 145 | fr | 4 | lang-compare | 2 | 0 毫秒 |
| analyze | 136 | it | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 145 | pt | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 137 | nl | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 137 | pl | 2 | lang-compare | 2 | 0 毫秒 |
| analyze | 132 | ru | 3 | lang-compare | 2 | 0 毫秒 |
| analyze | 84 | ja | 2 | lang-compare | 2 | 0 毫秒 |
| analyze | 70 | zh | 2 | lang-compare | 2 | 0 毫秒 |
| analyze | 123 | ar | 4 | lang-compare | 2 | 0 毫秒 |
| analyze | 160 | en | 106 | PERSON only | 7 | 258 毫秒 |
| analyze | 160 | en | 108 | PERSON+EMAIL+PHONE | 8 | 266 毫秒 |
| analyze | 160 | en | 113 | All entities | 8 | 264 毫秒 |
| decrypt | 342 | en | 37 | decrypt | 2 | 188 毫秒 |
| batch-analyze | 476 | en,de,fr | 394 | N/A | 26 | 5,278 毫秒 |
测试方法论
我们的测试套件结合 GUI 级别的 Playwright 测试与直接 API 验证,以实现全面覆盖。
GUI 测试
Playwright 浏览器自动化测试真实的用户工作流 — 单击按钮、填充表单、页面之间导航和验证视觉输出。
API 测试
直接 HTTP 请求使用边界情况、格式不正确的输入和仅 GUI 测试无法覆盖的边界条件验证每个端点。
会话缓存
经过身份验证的会话在各个里程碑中被缓存和重复使用,减少测试运行时间同时保持现实的用户行为。
CRUD 清理
测试期间创建的每个实体、预设和加密密钥在之后都会被清理,确保测试具有幂等性和可重复性。
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.