Masquez e-mails, téléphones et numéros de carte dans un texte
Masquez e-mails, téléphones et suites de chiffres type carte avant qu'un texte n'atteigne journaux ou tickets : dans l'exemple, deux e-mails, un téléphone et une carte deviennent [EMAIL_1], [EMAIL_2], [PHONE_1] et [CREDIT_CARD_1], pour un total de 4. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Masquez les motifs courants de données personnelles avant qu’un texte atteigne les journaux, tickets, analyses ou documents partagés. Cet outil déterministe repère les adresses e-mail, les formats téléphoniques usuels et les suites de 13 à 19 chiffres proches d’un numéro de carte. Chaque correspondance devient un libellé numéroté tel que [EMAIL_1], [PHONE_1] ou [CREDIT_CARD_1]. Vous recevez le texte nettoyé et les comptes par catégorie, sans appel à un service, déduction d’identité ni conservation du contenu envoyé.
Masquez les identifiants avant que le texte ne circule
Les textes opérationnels traversent souvent davantage de systèmes que leur auteur ne l’imagine. Un message d’assistance peut être copié dans un ticket, indexé pour la recherche, inclus dans un événement analytique puis collé dans une discussion d’équipe. Une adresse e-mail ou un téléphone utile lors de l’échange initial devient alors une exposition inutile en aval.
Cette capacité ajoute une étape de nettoyage prévisible avant cette circulation. Envoyez une valeur textuelle et récupérez le même contenu, avec les motifs reconnus remplacés par des libellés numérotés. La numérotation conserve une structure utile : plusieurs occurrences d’une catégorie restent distinctes, et vous savez que deux e-mails différents figuraient dans le texte sans les voir.
Des totaux par catégorie facilitent aussi les contrôles sans restituer les valeurs sensibles. L’algorithme est déterministe et n’accède pas au réseau : une même entrée donne toujours une même sortie. Il convient aux journaux, messages, notes exportées, jeux d’essai et autres textes qui nécessitent un masquage rapide et explicable.
Sachez précisément ce que le détecteur reconnaît
Le détecteur vise trois familles pratiques. Une adresse e-mail doit comporter une partie locale conventionnelle, une arobase et un domaine ponctué. Les téléphones couvrent des présentations nationales et internationales courantes avec espaces, points, tirets ou parenthèses.
Les candidats proches d’une carte contiennent de 13 à 19 chiffres, éventuellement séparés par des espaces ou tirets. Cette qualification est volontaire : aucun émetteur ni contrôle de validité n’est consulté, donc des comptes ou d’autres longues suites peuvent aussi être masqués. Les correspondances sont évaluées en une passe ordonnée afin qu’une longue suite ne soit pas partiellement transformée en téléphone et que les libellés insérés ne soient jamais rescannés.
L’outil ne détecte ni noms, adresses postales, identifiants nationaux, dates de naissance, adresses IP, ni secrets dépendant du contexte. Il ne garantit pas non plus la reconnaissance de toutes les notations réelles. Considérez la sortie comme une réduction ciblée des motifs, pas comme une preuve d’anonymat ou une autorisation de publication.
Intégrez la sortie prudemment dans vos automatisations
Placez le masquage le plus tôt possible, idéalement avant que votre application écrive un texte non fiable dans des journaux durables ou le transmette à un autre traitement. Un total nul signifie qu’aucun motif pris en charge n’a été trouvé, sans prouver l’absence de données personnelles. Pour une assurance renforcée, associez cette passe déterministe à des validations métier, des contrôles d’accès, des limites de conservation et une revue indépendante.
Évitez de stocker l’original uniquement pour le comparer à la version nettoyée : cela compromettrait l’objectif. Les libellés numérotés restent lisibles dans les tickets et rapports, mais ils ne sont pas réversibles et ne contiennent aucune donnée de récupération. Une entrée vide ou composée d’espaces est refusée.
Testez des exemples issus de vos sources, car les conventions téléphoniques régionales et les syntaxes d’e-mail inhabituelles varient.
Cas d’usage
Nettoyer les journaux applicatifs
Masquez les motifs de contact et de paiement avant l’entrée des messages dans les systèmes centralisés de journalisation et de recherche.
Préparer des échanges d’assistance
Retirez e-mails, téléphones et valeurs proches de cartes avant de partager des extraits de tickets pour une formation ou une enquête.
Assainir les jeux d’essai
Transformez des textes proches de la production en données de test plus sûres tout en conservant la position et la catégorie des remplacements.
Questions fréquentes
Quels motifs sont masqués ?
Les adresses e-mail conventionnelles, les téléphones aux formats courants et les suites de 13 à 19 chiffres avec espaces ou tirets facultatifs.
La validité d’un numéro de carte est-elle vérifiée ?
Non. Les longues suites sont traitées comme proches de cartes sans contrôle d’émetteur ni somme de vérification, afin de privilégier le masquage.
Une sortie nettoyée prouve-t-elle l’absence de données personnelles ?
Non. Des noms, adresses, formats régionaux, identifiants contextuels ou motifs non reconnus peuvent subsister. Ajoutez d’autres contrôles pour une désidentification complète.
Les libellés sont-ils réversibles ?
Non. Ils conservent uniquement la catégorie et le rang de l’occurrence ; aucun lien de récupération n’est renvoyé.
Pourquoi les libellés sont-ils numérotés plutôt qu'identiques ?
Pour que le texte garde sa structure : les catégories répétées restent distinctes, et la personne qui relit voit que deux adresses e-mail différentes figuraient sans voir aucune des deux. Les totaux par catégorie permettent aussi des contrôles de qualité sans exposer les valeurs.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/data/remove-pii-patterns \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."}'const res = await fetch("https://api.kit.forhosting.com/data/remove-pii-patterns", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/remove-pii-patterns",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/remove-pii-patterns", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/remove-pii-patterns", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "Email alex@example.com, call +1 (415) 555-0198, or reference card 4111 1111 1111 1111."
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.remove_pii_patterns",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Intégrez la sortie prudemment dans vos automatisations
Utilisez redacted_text comme document transformé et counts comme indicateur d’audit compact. En automatisation API, chaque texte coûte $0.002; la version navigateur applique localement la même logique pure.
Questions techniques
Que se passe-t-il si l’entrée est vide ?
Un texte vide ou uniquement composé d’espaces déclenche une erreur invalid_input plutôt qu’une transformation vide trompeuse.
Quel est le prix d’une requête API ?
Chaque texte coûte $0.002 par requête. L’exécuteur du navigateur emploie localement la même logique déterministe.