npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@krizad/thai-id-helper

v1.0.0

Published

A comprehensive utility kit for validating, formatting, masking, and extracting information from Thai National ID cards.

Readme

@krizad/thai-id-helper

ชุดเครื่องมือ (Utility Kit) แบบครบวงจรสำหรับจัดการเลขประจำตัวประชาชนไทย รองรับการตรวจสอบความถูกต้อง (Validation), การจัดรูปแบบ (Formatting), การเซ็นเซอร์ข้อมูล (Masking สำหรับ PDPA), การสุ่มเลขสำหรับการทดสอบ (Mocking) และการดึงข้อมูลเชิงลึกจากเลขบัตร

🚀 Live Demo: https://krizad.github.io/thai-id-helper-demo/

📦 การติดตั้ง (Installation)

สามารถติดตั้งผ่าน Package Manager ที่คุณใช้งาน:

npm install @krizad/thai-id-helper
# หรือ
yarn add @krizad/thai-id-helper
# หรือ
pnpm add @krizad/thai-id-helper

📝 ความหมายของเลขบัตรประจำตัวประชาชน 13 หลัก

เลขบัตรประจำตัวประชาชนไทย 13 หลัก มีความหมายซ่อนอยู่ แบ่งออกเป็น 5 ส่วนดังนี้ (รูปแบบ X-XXXX-XXXXX-XX-X):

เลขบัตรประชาชนหลักที่ 1

เลขหลักนี้หมายถึงประเภทบุคคลค่ะ ซึ่งประเภทบุคคลแบ่งเป็น 8 ประเภทด้วยกัน มาดูกันค่ะว่ามีอะไรบ้าง

  • เลข 1 : คือคนที่เกิดและมีสัญชาติเป็นคนไทย และแจ้งเกิดภายในกำหนดเวลา คือภายใน 15 วันนับแต่เกิดตามที่กฎหมายกำหนด
  • เลข 2 : คือคนที่เกิดและมีสัญชาติไทย แต่แจ้งเกิดเกินกำหนดเวลาที่กำหนด คือไม่ได้แจ้งเกิดภายใน 15 วันนับแต่เกิดตามที่กฎหมายกำหนด
  • เลข 3 : คือคนไทยและคนต่างด้าวที่มีใบสำคัญประจำตัวคนต่างด้าว และมีชื่อในทะเบียนบ้านสมัยเริ่มแรก
  • เลข 4 : คือคนไทยและคนต่างด้าวที่มีใบสำคัญต่างด้าว แต่แจ้งย้ายเข้าโดยยังไม่มีเลขประจำตัวประชาชนตั้งแต่เริ่มแรก
  • เลข 5 : คือคนไทยที่ได้รับอนุมัติให้เพิ่มชื่อเข้าไปในทะเบียนบ้านจากการตกสำรวจ หรือเป็นกรณีที่มี 2 สัญชาติ
  • เลข 6 : คือคนที่ไม่ได้เข้าเมืองมาตามกฎหมาย หรือคนที่เข้าเมืองมาตามกฎหมายก็จริงแต่ยังไม่ได้สัญชาติไทยหรืออยู่ในลักษณะชั่วคราว
  • เลข 7 : คือบุตรของบุคคลประเภทที่ 6 ที่เกิดในประเทศไทย
  • เลข 8 : คือคนต่างด้าวที่อาศัยอยู่ในประเทศไทยอย่างถูกต้องตามกฎหมาย คนที่ได้รับใบสำคัญประจำตัวคนต่างด้าวหรือได้รับการแปลงสัญชาติเป็นสัญชาติไทยแล้ว

เลขบัตรประชาชนหลักที่ 2 - 5

ตัวเลขหลักนี้บนบัตรประชาชนหมายถึงรหัสของสำนักทะเบียนที่ออกเลขประจำตัวประชาชนให้ค่ะ

  • เลขหลักที่ 2 : แสดงรหัสเขตการปกครองที่มีตั้งแต่ 1-9 ภาค
  • เลขหลักที่ 3 : หมายถึงจังหวัดที่อยู่ในภาคนั้น ๆ อีกที
  • เลขหลักที่ 4-5 : หมายถึงเขตหรืออำเภอในจังหวัดนั้น ๆ โดยเลขจะเริ่มตั้งแต่ 01 ไล่ลงไป ส่วนถ้าเป็นเขตเทศบาลจะไล่ตั้งแต่เลข 99 ย้อนลงมา

เลขบัตรประชาชนหลักที่ 6 - 10

ตัวเลขหลักนี้บ่งบอกถึงกลุ่มของบุคคลแต่ประเภท โดยสำนักงานทะเบียนจะจัดกลุ่มเรียงไปตามลำดับ หรือถ้าเป็นเด็กเกิดใหม่จะหมายถึงเลขประจำตัวในเล่มที่ของสูติบัตรตามที่ใบแจ้งเกิดที่อำเภอออกให้ คือเลขประจำตัวในทะเบียนบ้านนั่นแหละค่ะ

เลขบัตรประชาชนหลักที่ 11 - 12

เลขบัตรประชาชนหลักนี้หมายถึงลำดับที่ของบุคคลในแต่ละกลุ่มประเภท ซึ่งเป็นการจัดลำดับว่าคุณเป็นคนที่เท่าไหร่ในกลุ่มของบุคคลนั้น ๆ อีกทีค่ะ

เลขบัตรประชาชนหลักที่ 13

ส่วนเลขบัตรประชาชนหลักที่ 13 นี้จะเป็นตัวเลขที่ตรวจสอบความถูกต้องของเลขบัตรประชาชนทั้ง 12 หลักก่อนหน้า โดยตัวเลขหลักที่ 13 จะมาจากการคำนวณโดยใช้หลักการเลขคณิตโมดูลาร์ อ่านต่อได้ที่ https://www.wongnai.com/articles/meaning-of-id-card-number?ref=ct

🚀 ความสามารถ (Features)

  • ตรวจสอบความถูกต้อง (Validate): ตรวจสอบว่าเลขบัตรประชาชนถูกต้องตามหลักคณิตศาสตร์ (Check Digit) หรือไม่
  • จัดรูปแบบ (Format): เติมเครื่องหมายขีด (-) คั่นให้อ่านง่าย เช่น 1-1001-00123-45-6
  • เซ็นเซอร์ข้อมูล (Masking): ปิดบังตัวเลขบางส่วนเพื่อความปลอดภัยและปฏิบัติตามกฎหมาย PDPA เช่น 1-1001-XXXXX-XX-6
  • สุ่มเลขทดสอบ (Generator): สร้างเลขบัตรประชาชนจำลองที่ถูกต้องตามหลักคณิตศาสตร์ สำหรับใช้ในการทดสอบระบบ
  • ดึงข้อมูล (Extractor): แกะข้อมูลจากเลขบัตร เช่น ประเภทบุคคล, รหัสจังหวัดที่แจ้งเกิด, และรหัสอำเภอ

📖 วิธีการใช้งาน (Usage & Examples)

1. การตรวจสอบเลขบัตรประชาชน (validateThaiID)

ฟังก์ชันนี้จะคืนค่าเป็น boolean (true ถ้าเลขถูกต้อง, false ถ้าไม่ถูกต้อง)

import { validateThaiID } from '@krizad/thai-id-helper';

const isValid1 = validateThaiID('1100100123456');
console.log(isValid1); // true หรือ false ขึ้นอยู่กับเลข

const isValid2 = validateThaiID('1-1001-00123-45-6'); // รองรับรูปแบบที่มีขีดคั่นด้วย
console.log(isValid2); // true หรือ false

2. การจัดรูปแบบเลขบัตรประชาชน (formatThaiID)

ฟังก์ชันนี้จะรับเลข 13 หลัก (มีขีดหรือไม่มีก็ได้) แล้วคืนค่าเป็นสตริงที่มีขีดคั่นในรูปแบบที่ถูกต้อง

import { formatThaiID } from '@krizad/thai-id-helper';

const formatted = formatThaiID('1100100123456');
console.log(formatted); // '1-1001-00123-45-6'

3. การเซ็นเซอร์เลขบัตรประชาชน (maskThaiID)

เพื่อป้องกันข้อมูลส่วนบุคคลหลุดรอดและรองรับ PDPA ฟังก์ชันนี้จะเซ็นเซอร์เลข 7 หลักตรงกลาง

import { maskThaiID } from '@krizad/thai-id-helper';

const masked = maskThaiID('1100100123456');
console.log(masked); // '1-1001-XXXXX-XX-6'

4. การสุ่มเลขบัตรประชาชนจำลอง (generateMockThaiID)

มีประโยชน์มากสำหรับการเขียน Automated Tests หรือ Mock Data

import { generateMockThaiID } from '@krizad/thai-id-helper';

const mockId = generateMockThaiID();
console.log(mockId); // เช่น '3849175320185' (รับประกันว่าเป็นเลขที่ validate ผ่านแน่นอน)

5. การดึงข้อมูลเชิงลึกจากเลขบัตรประชาชน (extractThaiIDInfo)

ฟังก์ชันนี้ช่วยแกะข้อมูลที่ซ่อนอยู่ในเลข 13 หลัก คืนค่าออกมาเป็น Object พร้อมคำอธิบาย

import { extractThaiIDInfo } from '@krizad/thai-id-helper';

const info = extractThaiIDInfo('1100100123456');
console.log(info);
/* Output:
{ 
  isValid: true, 
  personType: 'คนที่เกิดและมีสัญชาติเป็นคนไทย และแจ้งเกิดภายในกำหนดเวลา', 
  provinceCode: '10', 
  districtCode: '01',
  birthCertificateBookNo: '00123',
  sequenceNo: '45',
  checkDigit: '6'
}
*/

📄 ใบอนุญาต (License)

MIT License