Comparación con outras bibliotecas
Varias bibliotecas de npm validan identificadores españois. Diferéncianse en que documentos cobren, como tratan o que escriben as persoas usuarias e que lle din cando un número non é válido. Esta páxina compara as súas funcionalidades; a de rendemento compara a súa velocidade, o seu tamaño e a súa concordancia con SPEC.md.
Táboa de funcionalidades
Sección titulada «Táboa de funcionalidades»Revisado o 1 de outubro de 2026 co README, o package.json e a páxina de npm de cada biblioteca. As versións e os tamaños saen dos resultados do benchmark.
| Biblioteca | Tipos | K/L/M | Normaliza a entrada | Obxecto de resultado | Mensaxes traducidas | Xeradores de datos de proba | Esquemas | Módulos | Tamaño, calquera tipo (min+gzip) | Última versión | Fontes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| nif-dni-nie-cif-validation esta compilación | DNI, NIE, CIF, K/L/M | si | si | si: código, regra de SPEC, mensaxe | EN, ES, CA, EU, GL | si | Zod, Valibot, Yup | ESM + CJS | 929 B | esta versión | README npm |
| spain-id 1.1.14 | DNI, NIE, CIF | non | parcial | non (só o tipo) | non | non | non | ESM + CJS | 583 B | 2026-06-12 | README npm |
| better-dni 4.4.2 | DNI, NIE | non | normalize() á parte | non | non | si | non | só CJS / UMD | 1.134 B | 2021-05-30 | README npm |
| dni-js 1.0.0 | DNI, NIE | non | parcial | non | non | non | non | só CJS | 882 B | 2026-08-08 | README npm |
| stdnum 1.12.6 | DNI, NIE, CIF, K/L/M e uns 90 países | si | si | si: clase de erro | só inglés | non | non | ESM + CJS | 51.063 B | 2026-08-01 | README npm |
| validator.js isIdentityCard(x, "ES") 13.15.35 | DNI, NIE | non | non | non | non | non | non | ESM (rutas internas) + CJS | 2.539 B | 2026-04-02 | README npm |
| validator.js isTaxID(x, "es-ES") 13.15.35 | DNI, NIE, K/L/M | si | non | non | non | non | non | ESM (rutas internas) + CJS | 6.537 B | 2026-04-02 | README npm |
| @maistik/validate-nif 2.0.1 | DNI, NIE, CIF | non | parcial | parcial: parse(), sen o motivo | non | non | non | ESM + CJS | 456 B | 2026-06-14 | README npm |
| @kreyo/nif-validator 0.1.0 | DNI, NIE, CIF | opcional | parcial | non | non | non | non | ESM + CJS | 533 B | 2026-04-29 | README npm |
| jsvat 2.5.4 | NIF-IVE da UE (ES + NIF) | si | si | si: validez e país | non | non | non | ESM + CJS | 1.186 B | 2024-12-12, obsoleta | README npm |
Que significan as columnas:
- Tipos: os documentos que valida a biblioteca. Os NIF K/L/M son de persoas sen DNI nin NIE (KLM-1).
- Normaliza a entrada: se acepta o que escriben as persoas usuarias (minúsculas, espazos, puntos, guións) sen un paso á parte. «Parcial» significa que acepta parte disto.
- Obxecto de resultado: se pode dicirlle algo máis que si ou non, como o tipo ou o motivo.
- Tamaño: un validador de calquera tipo, minificado e comprimido con gzip, segundo a medición do benchmark.
- Fontes: o README e a páxina de npm de cada biblioteca, cos que se revisou cada fila na data indicada arriba.
Cando é mellor outra biblioteca
Sección titulada «Cando é mellor outra biblioteca»- Moitos países: stdnum. stdnum, a versión en JavaScript de python-stdnum, valida identificadores duns 90 países cunha soa API, incluídos todos os tipos españois. Se necesita varios países, é unha boa elección. Esta biblioteca só cobre España, e aí profunda máis.
- O bundle máis pequeno: spain-id ou @maistik/validate-nif. Para un só validador, spain-id e @maistik/validate-nif ocupan menos ca esta biblioteca: consulte os tamaños. Non aceptan os NIF K/L/M nin a forma antiga do NIE, e non din por que un número non é válido, así que gastan menos bytes. Se cada byte conta e non necesita nada diso, son boas opcións.
- Moitos tipos de cadeas: validator.js. Se xa usa validator.js para enderezos electrónicos e URL, as súas dúas funcións españolas poden bastarlle para DNI e NIE. Non valida o CIF.
Que engade esta biblioteca
Sección titulada «Que engade esta biblioteca»- Todos os tipos, incluídos os NIF K/L/M e o NIE antigo de 10 caracteres, e as regras de control oficiais do CIF (CIF-3).
- Fontes para cada regra: cada unha ten un identificador e unha cita en SPEC.md, e cada erro indica a regra que non se cumpre.
- O motivo, como un código de erro, unha regra de SPEC e unha mensaxe en inglés, castelán, catalán, éuscaro ou galego.
- Normalización e a forma canónica que hai que gardar, xeradores de datos de proba e esquemas de Zod, Valibot e Yup.
Cando as bibliotecas discrepan de SPEC.md, a páxina de rendemento conta as discrepancias de cada unha e indica cales se deben a unha decisión que SPEC.md documenta.