Xóa dòng trùng trong list & CSV | Tool text trên trình duyệt (không cần Set)

(Cập nhật: 19 tháng 7, 2026 ) xóa trùng dedupe CSV email list URL list text tool
Kết luận

List / CSV / keyword → tool text, không phải new Set(). Chuẩn 1 dòng = 1 mục, bật trim (Excel hay thừa space), với email cân nhắc không phân biệt hoa thường. Xóa trùng lặp chạy trên trình duyệt, giữ lần xuất hiện đầu, không upload server. Cần dedupe mảng trong code JS → xem Xóa trùng mảng JavaScript.

Ticket 17:00: “Lọc trùng 3.200 email từ form đăng ký sự kiện.” Bạn không muốn mở Node, không muốn gửi file lên random “dedupe online”, và Excel “Remove Duplicates” trên máy lab trường đôi khi bị khóa macro. Đó là lúc cần tool text: dán → unique → copy.

Bài javascript-array-deduplicate đã cover Set / Map / NaN. Bài này không dạy thuật toán — dạy quy trình làm sạch dòng văn bản (email, URL, SKU, username Zalo/Telegram group export) trước khi import CRM hoặc crawler.

Bài viết này giúp bạn

  • Chuẩn bị list từ Sheets / CSV / Notepad đúng format
  • Biết bật trimignore case khi nào
  • Tránh sai khi dedupe cả hàng CSV thay vì một cột
  • Phân biệt ops text vs Set trong code
  • Checklist trước khi ghi đè file khách

Vì sao list text hay “trùng giả”?

Ba nguồn nhiễu phổ biến ở team outsourcing / freelance VN:

  1. Space / tab cuối ô khi copy từ Google Sheets ([email protected] vs [email protected] )
  2. Hoa thường email (Info@ vs info@) — SMTP thường không phân biệt local-part theo cách bạn nghĩ, nhưng chuỗi text thì có
  3. Xuống dòng Windows/Mac (\r\n vs \n) — tool tách theo dòng nên ổn, nhưng ô có xuống dòng bên trong sẽ vỡ thành nhiều mục

Tool so khớp chuỗi dòng (sau khi tùy chọn trim / lower). Không “hiểu” rằng hai URL khác query ?utm= là cùng landing — muốn gộp kiểu đó phải normalize trước.


Tool text vs Excel vs JavaScript Set

Chọn cách xóa trùng theo ngữ cảnh
Cách Phù hợp Hạn chế
Tool text (Kawa) List dán nhanh, email/URL/keyword, máy không có Excel đầy đủ Không parse CSV nhiều cột; giữ first-seen
Excel / Sheets Bảng nhiều cột, cần unique theo cột rồi giữ hàng đủ field Dễ quên trim; máy lab đôi khi hạn chế
JS Set / SQL DISTINCT Pipeline code, DB, CI lặp lại mỗi ngày Overkill cho job one-shot 5 phút

Quy tắc đơn giản:

  • Dữ liệu đang nằm trong file / clipboard → tool text hoặc Sheets
  • Dữ liệu đang nằm trong mảng runtime / API → Set / Map (bài JS)
  • Cần lặp lại mỗi đêm → viết script hoặc SQL, đừng mở tab thủ công

Thử ngay trên trình duyệt

🧹 Xóa trùng lặp ngay tại đây

Xóa trùng lặp Kawa hỗ trợ thực tế:

Tùy chọnViệc làm
(mặc định)Giữ dòng xuất hiện đầu tiên, bỏ các lần sau
Xóa khoảng trắng thừatrim() trước khi so sánh — "a"" a " thành một
Không phân biệt hoa thườngSo khóa toLowerCase() — vẫn giữ casing của lần đầu

Không có upload. Phù hợp lead list — vẫn nên làm việc trên bản copy, không xóa file gốc của khách.

Ví dụ 1: email form (có space + hoa thường)

Input:

[email protected]
[email protected]
[email protected]
  [email protected]
[email protected]
[email protected]

Không bật gì: còn 5 dòng — [email protected] (có/không space đã trim tùy chọn) vẫn có thể tách khỏi [email protected] nếu bỏ trim/ignore-case.

Bật trim + không phân biệt hoa thường: còn 3 dòng:

[email protected]
[email protected]
[email protected]

Casing giữ theo lần đầu (support@…), đủ để import ESP.

Ví dụ 2: URL crawl trùng

https://example.com/a
https://example.com/b
https://example.com/a
https://example.com/c
https://example.com/b

Sau dedupe:

https://example.com/a
https://example.com/b
https://example.com/c

Crawler không hit lại cùng path — tiết kiệm bandwidth VPS nhỏ. Lưu ý: http vs https, có/không www, trailing / vẫn là chuỗi khác — normalize trước nếu cần.

Ví dụ 3: CSV nhiều cột — đừng dán cả hàng mù quáng

File khách:

id,email,source
1,[email protected],fb
2,[email protected],gg
3,[email protected],tiktok

Nếu dán cả 3 dòng data vào tool: không dòng nào trùng vì cột id/source khác. Bạn tưởng “đã unique email” nhưng [email protected] vẫn hai lần.

Đúng:

  1. Copy chỉ cột email (hoặc =UNIQUE trên Sheets)
  2. Dedupe cột đó bằng tool nếu cần tùy chọn trim/case
  3. Dùng kết quả làm danh sách gửi; hoặc UNIQUE(A:A) trên Sheets khi cần giữ hàng đầy đủ theo email đầu tiên

Tool text = máy cắt dòng. Không thay “Remove duplicates by column” của Excel khi bạn phải giữ nguyên các cột khác.


Quy trình 4 bước (ops buổi chiều)

  1. Sao lưu file gốc (leads-raw.csv).
  2. Tách cột cần unique → Notepad / cột phụ Sheets.
  3. Dán vào dedupe → chọn trim / ignore case.
  4. Đếm dòng trước/sau (Notepad++ hoặc =COUNTA). Chênh lệch = số bản ghi trùng đã bỏ. Báo khách: “3200 → 2914 unique”.

Freelancer gửi số này trong message Zalo/Telegram giúp khách tin kết quả hơn là chỉ gửi file im lặng.


Lỗi thường gặp

Triệu chứngNguyên nhânCách xử lý
Vẫn thấy email “giống”Khác hoa thường / spaceBật ignore case + trim
Mất cả nhóm dòng “khác nhau”Dán nhầm block có dòng trống lặpXóa dòng trống hoặc chấp nhận 1 dòng trống còn lại
CSV “không bớt trùng”Unique theo cột nhưng dán cả hàngTách cột trước
Thứ tự “sai” so với bản mớiTool giữ first-seenĐưa bản ghi mới lên đầu file trước khi chạy
Tab trình duyệt đơHàng chục vạn dòng một lúcCắt chunk 5–10k dòng

Khi nào chuyển sang code / SQL

  • Import lặp lại mỗi ngày từ S3 / webhook
  • Dedupe theo nhiều khóa (email + phone)
  • Cần last-wins theo timestamp
  • Object JS / NestDTO trong API

Lúc đó quay lại bài Set / Map hoặc DISTINCT ON — đừng cố nhồi vào textarea.


Checklist trước khi gửi file đã sạch

  • Đã giữ bản raw
  • Format 1 mục / dòng (không sót dấu phẩy CSV trong ô)
  • Trim / ignore case khớp loại dữ liệu (email: thường bật cả hai)
  • Đếm trước/sau và ghi chú cho khách
  • Không dán secret (API key, mật khẩu) vào bất kỳ web tool nào — dùng list giả để tập

Liên kết liên quan

Bookmark lý do: quy trình ops rõ (tách cột → trim/case → first-seen → đếm trước/sau) cho email/URL/CSV — không lẫn với tutorial new Set().