GTIN, UPC & EAN Barcode Validator (Check Digit)
Pricing
from $0.50 / 1,000 results
GTIN, UPC & EAN Barcode Validator (Check Digit)
Validate GTIN-8, UPC-A, UPC-E, EAN-13, GTIN-14 and ISBN codes before you upload a feed to Amazon, Google Merchant Center, Walmart or Shopify. Checks the check digit, lost leading zeros, scientific notation, GS1 prefix ranges, coupon and in-store codes, placeholders and duplicates.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Ultimate Foresight Inc
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Check GTIN, UPC, EAN and ISBN barcode numbers before you upload a product feed to Amazon, Google Merchant Center, Walmart, Shopify or eBay. The GTIN, UPC & EAN Barcode Validator recalculates the GS1 check digit, finds leading zeros lost in spreadsheets, scientific notation like 4.00638E+12, in-store and coupon codes, GS1 demo and unassigned prefixes, placeholder numbers and the same GTIN on different products. It also converts every valid code to GTIN-14, GTIN-13 and UPC-A, expands UPC-E and turns ISBN-10 into ISBN-13. Click Start with the prefilled example to see it work.
This is a structure check: check digit, length and GS1 prefix rules. A valid result does not prove GS1 issued the number or that it belongs to this product or brand; confirm ownership with Verified by GS1 or the brand owner. Every row carries this disclaimer.
What does the GTIN, UPC & EAN Barcode Validator do?
- ✅ Check digit: the GS1 mod-10 check for GTIN-8, UPC-A (GTIN-12), EAN-13 and GTIN-14, and the mod-11 check for ISBN-10. Wrong check digits show the expected digit.
- ✅ Spreadsheet damage: 11-digit UPCs and 12-digit EANs that lost a leading zero, scientific notation (
4.00638E+12) that destroyed the last digits, and letters or symbols mixed into the number. - ✅ Prefix meaning: the GS1 prefix range and country or use (for example
003UPC-A compatible,978books), with flags for in-store/restricted codes (02,20-29), coupon and receipt ranges, the952demo prefix and unassigned prefixes. - ✅ Placeholder numbers: all-same digits, sequences like
123456789012and other fill-ins that marketplaces reject. - ✅ Duplicates across your feed: the same GTIN (after padding to 14 digits) on rows with different IDs or titles, which Amazon and Google treat as an error.
- ✅ Conversions:
gtin14,gtin13andupcAfor each valid code, UPC-E expanded to UPC-A, ISBN-10 converted to its 978 ISBN-13. - ✅ Output per code:
status(valid / valid with warnings / invalid),type,checkDigitValid,expectedCheckDigit,prefix,prefixMeaning,issues(code,severity,message,sourceUrl,fixHint),notes,checkedAtand a disclaimer.
Who is it for?
- Marketplace sellers and agencies fixing feed errors before Amazon, Walmart or Google Merchant Center rejects listings.
- Shopify and WooCommerce store owners cleaning barcodes exported to spreadsheets.
- Data and scraping teams validating GTIN fields in scraped product data before matching products across sites.
- Price comparison and catalog sites that join products on GTIN and need clean keys.
How to validate GTIN and UPC codes
- Click Start with the prefilled example (seven codes with common feed mistakes).
- Paste your codes into Codes only, or use Products with
gtin(orupc,ean,barcode,isbn) plus optionalid,titleandurlto get duplicate checks by product. - Or enter a Dataset ID from a Shopify, Amazon, Walmart or other product scraper. Common fields are found automatically; use Field map with dotted paths (for example
variants.0.barcode) for nested ones. - Turn on Only save rows with findings to skip clean codes; you only pay for saved rows.
- Export the results as CSV, Excel or JSON, or fetch them through the API.
Input example
This is the prefilled input:
{"products": [{"id": "SKU-1","title": "Example valid UPC-A","gtin": "036000291452"},{"id": "SKU-2","title": "Example wrong check digit","gtin": "036000291453"},{"id": "SKU-3","title": "Example lost leading zero (11 digits)","gtin": "36000291452"},{"id": "SKU-4","title": "Example spreadsheet scientific notation","gtin": "4.00638E+12"},{"id": "SKU-5","title": "Example in-store (restricted) code","gtin": "2012345678903"},{"id": "SKU-6","title": "Example duplicate of SKU-1","gtin": "0036000291452"},{"id": "SKU-7","title": "Example ISBN-10","gtin": "0-306-40615-2"}]}
Dataset mode:
{"datasetId": "YOUR_DATASET_ID", "fieldMap": {"gtin": "variants.0.barcode", "id": "sku", "title": "title"}, "onlyFlagged": true, "maxItems": 10000}
Output example
Real output from a run of the prefilled input on 2026-10-30 (long finding lists are shortened here; the run returns all of them):
[{"itemNo": 1,"productId": "SKU-1","title": "Example valid UPC-A","url": null,"input": "036000291452","digits": "036000291452","type": "UPC-A (GTIN-12)","checkDigitValid": true,"expectedCheckDigit": "2","gtin14": "00036000291452","gtin13": "0036000291452","upcA": "036000291452","prefix": "003","prefixMeaning": "UPC-A compatible - United States","status": "valid with warnings","issues": [{"code": "duplicate_gtin_in_run","severity": "medium","message": "The same GTIN appears on 3 rows with different IDs or titles (also on: SKU-3, SKU-6).","sourceUrl": "https://sellercentral.amazon.com/help/hub/reference/external/G200317470","fixHint": "Each distinct product (size, color, pack count) needs its own GTIN; variants can't share one."}],"notes": [],"issueCount": 1,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 2,"productId": "SKU-2","title": "Example wrong check digit","url": null,"input": "036000291453","digits": "036000291453","type": "UPC-A (GTIN-12)","checkDigitValid": false,"expectedCheckDigit": "2","gtin14": "00036000291453","gtin13": "0036000291453","upcA": "036000291453","prefix": "003","prefixMeaning": "UPC-A compatible - United States","status": "invalid","issues": [{"code": "bad_check_digit","severity": "high","message": "Check digit is 3, but GS1's formula gives 2.","sourceUrl": "https://www.gs1.org/services/how-calculate-check-digit-manually","fixHint": "Usually a typo or a copied/made-up number. Take the code from the physical barcode or the brand owner."}],"notes": [],"issueCount": 1,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 3,"productId": "SKU-3","title": "Example lost leading zero (11 digits)","url": null,"input": "36000291452","digits": "36000291452","type": "UPC-A (GTIN-12), leading zero missing","checkDigitValid": true,"expectedCheckDigit": "2","gtin14": "00036000291452","gtin13": "0036000291452","upcA": "036000291452","prefix": "003","prefixMeaning": "UPC-A compatible - United States","status": "valid with warnings","issues": [{"code": "leading_zero_lost","severity": "medium","message": "11 digits: this looks like a UPC-A whose leading 0 was dropped (with the 0 restored, the check digit is valid).","sourceUrl": "https://support.google.com/merchants/answer/6324461","fixHint": "Store it as text with the leading zero: 036000291452."},{"code": "duplicate_gtin_in_run","severity": "medium","message": "The same GTIN appears on 3 rows with different IDs or titles (also on: SKU-1, SKU-6).","sourceUrl": "https://sellercentral.amazon.com/help/hub/reference/external/G200317470","fixHint": "Each distinct product (size, color, pack count) needs its own GTIN; variants can't share one."}],"notes": [],"issueCount": 2,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 4,"productId": "SKU-4","title": "Example spreadsheet scientific notation","url": null,"input": "4.00638E+12","digits": null,"type": null,"checkDigitValid": null,"expectedCheckDigit": null,"gtin14": null,"gtin13": null,"upcA": null,"prefix": null,"prefixMeaning": null,"status": "invalid","issues": [{"code": "spreadsheet_scientific_notation","severity": "high","message": "'4.00638E+12' is in scientific notation, so the spreadsheet has already rounded away the last digits.","sourceUrl": "https://support.google.com/merchants/answer/6324461","fixHint": "Re-export the column formatted as text; the original digits can't be recovered from this value."}],"notes": [],"issueCount": 1,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 5,"productId": "SKU-5","title": "Example in-store (restricted) code","url": null,"input": "2012345678903","digits": "2012345678903","type": "EAN-13 (GTIN-13)","checkDigitValid": true,"expectedCheckDigit": "3","gtin14": "02012345678903","gtin13": "2012345678903","upcA": null,"prefix": "201","prefixMeaning": "Used to issue GS1 restricted circulation number within a geographic region","status": "valid with warnings","issues": [{"code": "restricted_circulation","severity": "medium","message": "Prefix 201 is for restricted circulation (in-store or internal numbers), not a global product ID.","sourceUrl": "https://www.gs1.org/standards/id-keys/company-prefix","fixHint": "Marketplaces expect the brand owner's GTIN; store-issued codes are often rejected."}],"notes": [],"issueCount": 1,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 6,"productId": "SKU-6","title": "Example duplicate of SKU-1","url": null,"input": "0036000291452","digits": "0036000291452","type": "EAN-13 (GTIN-13)","checkDigitValid": true,"expectedCheckDigit": "2","gtin14": "00036000291452","gtin13": "0036000291452","upcA": "036000291452","prefix": "003","prefixMeaning": "UPC-A compatible - United States","status": "valid with warnings","issues": [{"code": "duplicate_gtin_in_run","severity": "medium","message": "The same GTIN appears on 3 rows with different IDs or titles (also on: SKU-1, SKU-3).","sourceUrl": "https://sellercentral.amazon.com/help/hub/reference/external/G200317470","fixHint": "Each distinct product (size, color, pack count) needs its own GTIN; variants can't share one."}],"notes": [],"issueCount": 1,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."},{"itemNo": 7,"productId": "SKU-7","title": "Example ISBN-10","url": null,"input": "0-306-40615-2","digits": "0306406152","type": "ISBN-10","checkDigitValid": true,"expectedCheckDigit": null,"gtin14": "09780306406157","gtin13": "9780306406157","upcA": null,"prefix": "978","prefixMeaning": "Book (ISBN converted to ISBN-13 / EAN-13)","status": "valid","issues": [],"notes": ["Converted ISBN-10 to its 978 ISBN-13, which is the barcode number marketplaces expect."],"issueCount": 0,"checkedAt": "2026-10-30T18:52:05+00:00","disclaimer": "Structure check only: GS1 check digit, length and prefix rules. A valid result does not..."}]
How much does it cost to validate barcodes?
This Actor uses pay-per-event pricing: $0.0005 per code saved plus a $0.00005 start fee per run, plus small platform usage paid by you (a few hundredths of a cent for small runs). That's about $0.50 for 1,000 codes and $5 for 10,000 codes plus usage. With Only save rows with findings on, valid codes aren't saved or charged. You can set a maximum cost per run in the run options.
Use it through the API, integrations or AI agents
- Run it and get results in one call:
https://api.apify.com/v2/acts/ultimatemc~gtin-barcode-validator/run-sync-get-dataset-items - Use it from AI agents through the Apify MCP server:
https://mcp.apify.com?tools=ultimatemc/gtin-barcode-validator - Schedule it after a daily scraper run, send flagged rows to Slack or email with webhooks, or connect it to Make, Zapier, n8n or Google Sheets.
- Chain it after a product scraper by passing the scraper's dataset ID.
How it works
Validation is fully deterministic and runs offline: the GS1 check digit formula, the length rules of the GS1 General Specifications and a built-in GS1 prefix table, checked on 2026-10-30. No barcode database is queried, so it's fast and cheap, but it can't tell you who owns a number. Duplicates are found by padding every valid code to GTIN-14 and comparing rows in the same run.
Sources:
- GS1: How to calculate a check digit manually
- GS1 General Specifications
- GS1 Company Prefix
- Verified by GS1
- Amazon Seller Central: Product UPCs and GTINs
- Google Merchant Center: GTIN
- International ISBN Agency: What is an ISBN?
FAQ
Does "valid" mean the barcode is real and mine?
No. It means the number has the right length, check digit and prefix structure. Marketplaces also check GS1 ownership; use Verified by GS1 to confirm who licensed a number.
Why is my 11-digit UPC flagged?
Spreadsheets often drop the leading zero of a UPC-A. If adding the zero gives a valid check digit, the row is marked leading_zero_lost and the corrected code is shown.
Can it fix scientific notation like 4.00638E+12?
No. That format has already lost the last digits, so the original number can't be recovered. Re-export the column as text.
Does it look up product names?
No. It doesn't call any barcode database, which keeps it fast and costs at $0.0005 per code.
Is it AI?
No. It's a fixed set of GS1 rules, so results are repeatable.
Limitations
- Ownership isn't checked; a correctly formed number can still belong to someone else.
- The GS1 prefix table is built in and reflects GS1 published ranges as of 2026-10-30.
- Duplicates are only detected within one run.
- Codes damaged by scientific notation can't be repaired.
Other tools by Ultimate Foresight
- Fair Housing Listing Checker for Real Estate Ads: flags rental and sale listing wording that may raise Fair Housing Act issues, with HUD sources and rewrite tips (screening aid only).
- Ad Copy Policy Checker for Meta, Google & TikTok: checks ad text against Facebook, Instagram, Google Ads and TikTok ad policies before you submit.
- H-1B Visa Sponsor Checker & Score for Job Listings: adds Department of Labor H-1B sponsorship history and a 0-100 score to company names or job listings.
- Chain vs Independent Labeler for Google Maps Leads: labels local businesses as chain, franchise or independent.
- YouTube Monetization Checker for Scripts & Titles: pre-checks titles, descriptions and scripts for wording that leads to limited or no ads.
- Etsy & eBay Listing Policy & Banned Item Checker: pre-checks marketplace listings for prohibited items, counterfeit wording and off-platform contact.
- Job Scam Detector & Trust Score for Job Postings: scores job postings 0-100 for scam and ghost-job signals.
- SAM.gov Amendment & Opportunity Change Tracker: shows what changed between versions of a SAM.gov notice: deadlines, set-asides, NAICS and attachments.
- Product Recall Checker for Brands, UPCs & Products: matches your brands, products, UPCs or model numbers against CPSC, FDA and NHTSA recalls.
- App Store & Google Play Listing Policy Checker: pre-checks app names, subtitles and descriptions against Apple and Google Play metadata rules.
- Company Name Normalizer & Deduplicator for CRM: cleans company names (Inc, LLC, d/b/a, aliases) and groups duplicates in CRM, lead or vendor lists.
- FCC Covered List & Section 889 Bulk Screener: screens FCC IDs and brand names against the public FCC Covered List, with sources and timestamps (screening aid only).
- Green Claims Checker: EU Greenwashing Ban & FTC: flags risky eco-friendly, carbon neutral and recyclable wording under EU, FTC and UK CMA rules.
- Influencer #ad Disclosure Checker: FTC & ASA: flags influencer posts with missing or unclear #ad labels under FTC, ASA/CAP and CMA rules.
- Job Title to SOC Code Mapper with O*NET Data: maps job titles to SOC and O*NET-SOC codes in bulk, with seniority and tech skills found in the posting.
- Shrinkflation Detector for Grocery Price Data: finds smaller packs at the same or higher price by comparing two runs of a grocery scraper, with unit price before and after.
- Job Ad Discrimination Checker for Job Posts (US): flags age, sex, national origin, citizenship and other discriminatory wording in job posts, with EEOC and DOJ sources (screening aid only).
- Walmart Listing Policy Checker for Titles & Copy: flags promotional phrases, retailer names, URLs, long titles and pesticide or FDA claims in Walmart Marketplace listings, with policy links and fixes.
- TikTok Shop Listing Policy Checker for Products: flags off-platform links, dupe wording, weight-loss, disease and FDA claims and title rule breaks in TikTok Shop listings.
- Supplement & Cosmetic Claims Checker: FDA & FTC: flags disease, drug and 'FDA approved' claims and missing supplement disclaimers in supplement and beauty product copy, with FDA and FTC sources (screening aid only).
- Rental Listing Scam Checker for Craigslist & FB: scores rental listings 0-100 for FTC-listed scam signs like wire or gift card payment, deposit before viewing and rent far below similar listings.
- Fake Review Checker: Incentivized & Duplicates: screens scraped reviews for incentivized or insider wording, copied text, rating bursts and rating/text mismatches named in the FTC 2024 fake-review rule.
- Facebook Marketplace Listing Policy Checker: flags Marketplace listings that may break Meta's Commerce Policies (weapons, vapes, Rx, animals, gift cards, services, counterfeits and more), with policy links.
- Fake Discount Checker: EU 30-Day Prior Price: checks 'was' and strikethrough prices against your own price history for 30-day prior-price, raise-then-discount and wrong-badge issues.
- SMS Marketing Message Checker: STOP & 10DLC: pre-checks SMS marketing texts for segment count, STOP opt-out wording, URL shorteners, SHAFT content and quiet hours.
- Hidden Fee Checker: Hotel, Rental & Ticket Prices: flags headline prices that leave out mandatory resort, service or booking fees under the FTC junk fees rule (16 CFR 464), with sources per finding.
- EU GPSR Listing Checker for Amazon, eBay & Shops: checks listings for the EU GPSR Article 19 online-sale details: manufacturer, EU responsible person, product identifier, picture and warnings.
- Food Allergen Label Checker: US, EU & AU: compares ingredient lists with the 'Contains' statement for US 9, EU/UK 14 and Australian PEAL allergens and flags gaps and conflicting free-from claims.
- Toy Choking Hazard Warning Checker (CPSC): flags toy listings missing the CPSC choking-hazard warnings for small parts, balloons, small balls and marbles, with age-grade checks.
- Textile Fiber Label Checker: Bamboo & Origin: flags 'bamboo' claims that should say rayon, fiber percentages that don't add up, mismatched silk or cashmere titles and missing Made in USA/Imported.
- Amazon Listing Policy Checker for Titles & Bullets: flags pesticide, FDA and disease claims and Amazon title and bullet rule breaks in bulk, with policy links and fixes.
- Prop 65 Warning Checker for Product Listings: flags Prop 65 safe-harbor warnings missing 'WARNING', the P65Warnings.ca.gov link or a chemical name, old short forms, and listed chemicals mentioned with no warning.
- Unit Price Checker for Grocery & Retail Listings: parses pack sizes, recomputes the price per kg, litre or item, and flags missing or wrong unit prices in grocery and retail data.
- Made in USA Claim Checker for Product Listings: flags unqualified 'Made in USA' claims next to imported or foreign-origin details under the FTC rule (16 CFR 323), with sources per finding.
- Subscription Auto-Renewal Disclosure Checker: checks subscription and free-trial offer text for missing renewal, price, billing period and cancellation disclosures under California law and FTC ROSCA.
- Email CAN-SPAM Checker & Unsubscribe Header Test: pre-checks marketing emails for missing unsubscribe links or postal address, misleading subjects and Google/Yahoo one-click unsubscribe headers.
Found a wrong result? Open an issue on the Issues tab with the code and what you expected, and we'll review the rule.