{"id":18962,"date":"2026-09-17T12:39:33","date_gmt":"2026-09-17T10:39:33","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/isrc-upc-ean-iswc-validator\/"},"modified":"2026-09-17T14:28:35","modified_gmt":"2026-09-17T12:28:35","slug":"isrc-upc-ean-iswc-validator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/","title":{"rendered":"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych"},"content":{"rendered":"<div class=\"lw-codes\" id=\"codes-wurzel\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<style>\n.lw-codes { --codes-warn: #e8a33d; }\n:root[data-theme=\"light\"] .lw-codes { --codes-warn: #8f5300; }\n.lw-codes textarea { width: 100%; min-height: 130px; box-sizing: border-box; padding: 10px 12px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; font-size: 0.95rem; line-height: 1.5; resize: vertical; }\n.lw-codes .codes-reihe { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; margin: 12px 0 0; }\n.lw-codes .codes-knopf { background: var(--accent, #2ba6df); color: var(--on-accent, #0b1114); border: none; padding: 11px 22px; border-radius: 6px; font-weight: 700; cursor: pointer; }\n.lw-codes .codes-knopf2 { background: transparent; color: var(--text-secondary, #a0a0b0); border: 1px solid var(--border, #2a2a35); padding: 10px 14px; border-radius: 6px; cursor: pointer; }\n.lw-codes .codes-karte { background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-left-width: 3px; border-radius: 8px; padding: 12px 14px; margin: 0 0 10px; }\n.lw-codes .codes-karte.codes-ok { border-left-color: var(--ok, #7ee787); }\n.lw-codes .codes-karte.codes-fehler { border-left-color: var(--fail, #ff7b72); }\n.lw-codes .codes-karte.codes-warn { border-left-color: var(--codes-warn); }\n.lw-codes .codes-kopf { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }\n.lw-codes .codes-typ { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-secondary, #a0a0b0); }\n.lw-codes .codes-form { font-family: monospace; font-size: 1.12rem; font-weight: 700; color: var(--text-primary, #e8e8ee); word-break: break-all; }\n.lw-codes .codes-urteil { font-weight: 700; font-size: 0.9rem; }\n.lw-codes .codes-urteil.codes-ok { color: var(--ok, #7ee787); }\n.lw-codes .codes-urteil.codes-fehler { color: var(--fail, #ff7b72); }\n.lw-codes .codes-urteil.codes-warn { color: var(--codes-warn); }\n.lw-codes table { border-collapse: collapse; width: 100%; font-size: 0.86rem; margin-top: 8px; }\n.lw-codes th, .lw-codes td { text-align: left; padding: 5px 12px 5px 0; border-bottom: 1px solid var(--border, #2a2a35); vertical-align: top; }\n.lw-codes th { color: var(--text-secondary, #a0a0b0); font-weight: 400; white-space: nowrap; width: 1%; }\n.lw-codes td { color: var(--text-primary, #e8e8ee); }\n.lw-codes td code { font-family: monospace; }\n.lw-codes .codes-meldung { font-size: 0.86rem; color: var(--text-secondary, #a0a0b0); margin: 8px 0 0; line-height: 1.5; }\n.lw-codes .codes-h { font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.98rem; margin: 26px 0 8px; }\n.lw-codes .codes-klein { font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); line-height: 1.55; }\n.lw-codes a { color: var(--accent, #2ba6df); }\n<\/style>\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 18px;\">Dystrybutorzy i organizacje zbiorowego zarz\u0105dzania odrzucaj\u0105 wydawnictwa z b\u0142\u0119dnymi kodami, a wystarczy do tego jedna przestawiona cyfra w UPC lub ISWC. Walidator rozpoznaje kody ISRC, UPC-A, EAN-13 i ISWC na li\u015bcie, sprawdza ich budow\u0119 i cyfry kontrolne, por\u00f3wnuje przedrostki ISRC z list\u0105 prawid\u0142owych kod\u00f3w IFPI, rozk\u0142ada ka\u017cdy kod na cz\u0119\u015bci i podaje poprawn\u0105 cyfr\u0119 kontroln\u0105, gdy kod nie pasuje.<\/p>\n<p>    <label for=\"codes-eingabe\" class=\"codes-klein\" style=\"display: block; margin-bottom: 6px;\">Kody, po jednym w wierszu (my\u015blniki, kropki, spacje i przedrostki takie jak \u201eISRC\u201d s\u0105 pomijane)<\/label><br \/>\n    <textarea id=\"codes-eingabe\" spellcheck=\"false\" autocomplete=\"off\" placeholder=\"GBDUW0000059&#10;T-034.524.680-1&#10;036000291452\"><\/textarea><\/p>\n<div class=\"codes-reihe\">\n        <button id=\"codes-pruefen\" type=\"button\" class=\"codes-knopf\">Sprawdzenie kod\u00f3w<\/button><br \/>\n        <button id=\"codes-beispiele\" type=\"button\" class=\"codes-knopf2\">Wczytanie przyk\u0142ad\u00f3w<\/button><br \/>\n        <span id=\"codes-zaehler\" data-mp-mask class=\"codes-klein\" aria-live=\"polite\"><\/span>\n    <\/div>\n<div id=\"codes-ausgabe\" data-mp-mask style=\"margin-top: 18px;\" aria-live=\"polite\"><\/div>\n<div class=\"codes-h\">Budowa kod\u00f3w<\/div>\n<p class=\"codes-klein\" style=\"margin: 0 0 6px;\">ISRC (International Standard Recording Code, ISO 3901) oznacza nagranie: 12 znak\u00f3w z\u0142o\u017conych z przedrostka (dwuliterowy kod z listy IFPI i trzyznakowy kod rejestruj\u0105cego), dw\u00f3ch ostatnich cyfr roku odniesienia i pi\u0119ciocyfrowego numeru kolejnego. Nie ma cyfry kontrolnej, dlatego sprawdzane s\u0105 budowa, lista przedrostk\u00f3w oraz przypadki, kt\u00f3re biuletyn walidacyjny IFPI wymienia jako b\u0142\u0119dne lub w\u0105tpliwe.<\/p>\n<p class=\"codes-klein\" style=\"margin: 0 0 6px;\">UPC-A i EAN-13 oznaczaj\u0105 wydawnictwo jako produkt. Ostatnia cyfra jest cyfr\u0105 kontroln\u0105: od prawej cyfry s\u0105 mno\u017cone na zmian\u0119 przez 3 i 1, a cyfra kontrolna dope\u0142nia sum\u0119 do najbli\u017cszej wielokrotno\u015bci dziesi\u0119ciu. Z UPC-A powstaje EAN-13 po dodaniu zera na pocz\u0105tku.<\/p>\n<p class=\"codes-klein\" style=\"margin: 0 0 6px;\">ISWC (International Standard Musical Work Code, ISO 15707) oznacza kompozycj\u0119, a nie nagranie: T, dziewi\u0119\u0107 cyfr i cyfra kontrolna. T ma warto\u015b\u0107 1, ka\u017cda z dziewi\u0119ciu cyfr jest mno\u017cona przez numer pozycji (od 1 do 9), a cyfra kontrolna dope\u0142nia sum\u0119 do najbli\u017cszej wielokrotno\u015bci dziesi\u0119ciu.<\/p>\n<p class=\"codes-klein\" style=\"margin: 20px 0 0;\">\u0179r\u00f3d\u0142a: <a href=\"https:\/\/isrc.ifpi.org\/images\/downloads\/ISRC_Handbook.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">ISRC Handbook (IFPI)<\/a> \u00b7 <a href=\"https:\/\/isrc.ifpi.org\/images\/downloads\/Bulletin_2015-01_-_Validating_ISRC_Codes.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Validating an International Standard Recording Code (IFPI Bulletin 2015\/01)<\/a> \u00b7 <a href=\"https:\/\/isrc.ifpi.org\/images\/downloads\/Valid-Characters-in-the-ISRC-Prefix.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">ISRC Agency Code Allocations (IFPI)<\/a> \u00b7 <a href=\"https:\/\/www.iso.org\/standard\/83125.html\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 15707:2022 (ISWC)<\/a> \u00b7 <a href=\"https:\/\/www.gs1.org\/services\/how-calculate-check-digit-manually\" target=\"_blank\" rel=\"noopener noreferrer\">How to calculate a check digit manually (GS1)<\/a><\/p>\n<p class=\"codes-klein\" style=\"font-size: 0.8rem; margin: 14px 0 0;\">Wszystko dzia\u0142a w przegl\u0105darce. Sprawdzane s\u0105 budowa i cyfry kontrolne; to, czy kod zosta\u0142 faktycznie nadany lub nale\u017cy do konkretnego wydawnictwa, mo\u017ce potwierdzi\u0107 tylko instytucja nadaj\u0105ca albo dystrybutor. Linki do MusicBrainz otwieraj\u0105 otwart\u0105 baz\u0119 danych muzycznych w nowej karcie i dopiero wtedy przekazuj\u0105 kod.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"sprache\":\"pl\",\"einleitung\":\"Dystrybutorzy i organizacje zbiorowego zarz\u0105dzania odrzucaj\u0105 wydawnictwa z b\u0142\u0119dnymi kodami, a wystarczy do tego jedna przestawiona cyfra w UPC lub ISWC. Walidator rozpoznaje kody ISRC, UPC-A, EAN-13 i ISWC na li\u015bcie, sprawdza ich budow\u0119 i cyfry kontrolne, por\u00f3wnuje przedrostki ISRC z list\u0105 prawid\u0142owych kod\u00f3w IFPI, rozk\u0142ada ka\u017cdy kod na cz\u0119\u015bci i podaje poprawn\u0105 cyfr\u0119 kontroln\u0105, gdy kod nie pasuje.\",\"eingabe_label\":\"Kody, po jednym w wierszu (my\u015blniki, kropki, spacje i przedrostki takie jak \u201eISRC\u201d s\u0105 pomijane)\",\"knopf_pruefen\":\"Sprawdzenie kod\u00f3w\",\"knopf_beispiele\":\"Wczytanie przyk\u0142ad\u00f3w\",\"beispiele\":\"GBDUW0000059\\nus-um7-18-20728\\nUS-S1Z-26-00001\\nGB-000-00-00000\\nT-034.524.680-1\\nT-034.524.680-2\\n036000291452\\n4006381333931\\n4006381333932\",\"leer\":\"Brak wpisanych kod\u00f3w.\",\"zaehler_satz\":\"Kody: {gesamt} \u00b7 poprawne: {ok} \u00b7 z uwag\u0105: {warn} \u00b7 b\u0142\u0119dne: {fehler}\",\"typ_isrc\":\"ISRC\",\"typ_iswc\":\"ISWC\",\"typ_upc\":\"UPC-A (GTIN-12)\",\"typ_ean\":\"EAN-13 (GTIN-13)\",\"typ_gtin14\":\"GTIN-14\",\"typ_gtin8\":\"EAN-8 (GTIN-8)\",\"typ_unbekannt\":\"nierozpoznany\",\"urteil_ok\":\"poprawny\",\"urteil_warn\":\"poprawny, z uwag\u0105\",\"urteil_fehler\":\"b\u0142\u0119dny\",\"teil_land\":\"Kod kraju\",\"teil_registrant\":\"Kod rejestruj\u0105cego\",\"teil_jahr\":\"Rok odniesienia\",\"teil_bezeichnung\":\"Numer kolejny\",\"teil_werknummer\":\"Numer utworu\",\"teil_pruefziffer\":\"Cyfra kontrolna\",\"teil_ean\":\"Jako EAN-13\",\"teil_upc\":\"Jako UPC-A\",\"pruefziffer_satz\":\"podana {gegeben}, obliczona {soll}\",\"pruefziffer_falsch\":\"Cyfra kontrolna nie pasuje; przy podanych cyfrach powinna wynosi\u0107 {soll}: {richtig}. Zwykle b\u0142\u0105d tkwi w jednej z pozosta\u0142ych cyfr.\",\"isrc_laenge\":\"ISRC ma 12 znak\u00f3w; ten wpis ma po usuni\u0119ciu separator\u00f3w {n}.\",\"isrc_land_zeichen\":\"Pierwsze dwa znaki (kod kraju) musz\u0105 by\u0107 literami.\",\"isrc_reg_zeichen\":\"Znaki 3\u20135 (kod rejestruj\u0105cego) musz\u0105 by\u0107 literami lub cyframi.\",\"isrc_jahr_zeichen\":\"Znaki 6 i 7 (rok odniesienia) musz\u0105 by\u0107 cyframi.\",\"isrc_nr_zeichen\":\"Znaki 8\u201312 (numer kolejny) musz\u0105 by\u0107 cyframi.\",\"isrc_jahr_satz\":\"nadany w {jahr}\",\"iswc_ohne_t\":\"Pierwszym znakiem ISWC jest litera T.\",\"iswc_laenge\":\"Po literze T ISWC ma 10 cyfr; ten wpis ma {n}.\",\"zehn_ziffern\":\"Dziesi\u0119\u0107 cyfr bez T mo\u017ce by\u0107 kodem ISWC bez przedrostka. Poprawny zapis ISWC ma wiod\u0105ce T, np. T-034.524.680-1.\",\"ziffern_laenge\":\"Liczba cyfr {n} nie pasuje ani do UPC-A (12), ani do EAN-13 (13), GTIN-14 (14) czy EAN-8 (8).\",\"nicht_erkannt\":\"Nie rozpoznano wzorca ISRC, UPC, EAN ani ISWC.\",\"gtin14_hinweis\":\"GTIN-14 oznacza jednostki handlowe, np. kartony, a nie wydawnictwo; sklepy i dystrybutorzy oczekuj\u0105 UPC-A lub EAN-13.\",\"gtin8_hinweis\":\"EAN-8 s\u0142u\u017cy do ma\u0142ych opakowa\u0144, a nie do wydawnictw muzycznych.\",\"unbekannt\":\"nieznany\",\"h_aufbau\":\"Budowa kod\u00f3w\",\"erkl_isrc\":\"ISRC (International Standard Recording Code, ISO 3901) oznacza nagranie: 12 znak\u00f3w z\u0142o\u017conych z przedrostka (dwuliterowy kod z listy IFPI i trzyznakowy kod rejestruj\u0105cego), dw\u00f3ch ostatnich cyfr roku odniesienia i pi\u0119ciocyfrowego numeru kolejnego. Nie ma cyfry kontrolnej, dlatego sprawdzane s\u0105 budowa, lista przedrostk\u00f3w oraz przypadki, kt\u00f3re biuletyn walidacyjny IFPI wymienia jako b\u0142\u0119dne lub w\u0105tpliwe.\",\"erkl_upc\":\"UPC-A i EAN-13 oznaczaj\u0105 wydawnictwo jako produkt. Ostatnia cyfra jest cyfr\u0105 kontroln\u0105: od prawej cyfry s\u0105 mno\u017cone na zmian\u0119 przez 3 i 1, a cyfra kontrolna dope\u0142nia sum\u0119 do najbli\u017cszej wielokrotno\u015bci dziesi\u0119ciu. Z UPC-A powstaje EAN-13 po dodaniu zera na pocz\u0105tku.\",\"erkl_iswc\":\"ISWC (International Standard Musical Work Code, ISO 15707) oznacza kompozycj\u0119, a nie nagranie: T, dziewi\u0119\u0107 cyfr i cyfra kontrolna. T ma warto\u015b\u0107 1, ka\u017cda z dziewi\u0119ciu cyfr jest mno\u017cona przez numer pozycji (od 1 do 9), a cyfra kontrolna dope\u0142nia sum\u0119 do najbli\u017cszej wielokrotno\u015bci dziesi\u0119ciu.\",\"quellen_titel\":\"\u0179r\u00f3d\u0142a\",\"grenze\":\"Wszystko dzia\u0142a w przegl\u0105darce. Sprawdzane s\u0105 budowa i cyfry kontrolne; to, czy kod zosta\u0142 faktycznie nadany lub nale\u017cy do konkretnego wydawnictwa, mo\u017ce potwierdzi\u0107 tylko instytucja nadaj\u0105ca albo dystrybutor. Linki do MusicBrainz otwieraj\u0105 otwart\u0105 baz\u0119 danych muzycznych w nowej karcie i dopiero wtedy przekazuj\u0105 kod.\",\"teil_agentur\":\"Agencja ISRC\",\"isrc_praefix_unbekannt\":\"{code} nie wyst\u0119puje na li\u015bcie prawid\u0142owych przedrostk\u00f3w ISRC prowadzonej przez IFPI (stan: stycze\u0144 2026). Na dw\u00f3ch pierwszych pozycjach dopuszczalne s\u0105 tylko kody z tej listy.\",\"isrc_beispiel\":\"Przedrostek {praefix} agencje ISRC stosuj\u0105 tylko w dokumentacji i materia\u0142ach szkoleniowych. Nie jest on nigdy nadawany, dlatego ISRC z tym przedrostkiem jest zawsze b\u0142\u0119dny.\",\"isrc_tc_jahr\":\"Przedrostek TC by\u0142 dawniej u\u017cywany przez TuneCore; kody ISRC z rokiem odniesienia 26 lub p\u00f3\u017aniejszym nie mog\u0105 go zawiera\u0107.\",\"isrc_platzhalter\":\"Wielokrotnie powt\u00f3rzony ten sam znak, jak w GB-000-00-00000, wed\u0142ug IFPI wskazuje na dane zast\u0119pcze lub testowe, nieprzeznaczone do wydania.\",\"isrc_jahr_alt\":\"We wcze\u015bniejszych wersjach normy rok odniesienia oznacza\u0142 rok nagrania. {jahr} jest wi\u0119c wiarygodny tylko dla starszego nagrania, a nie jako rok nadania kodu.\",\"isrc_jahr_satz_alt\":\"rok nagrania {jahr} (dawna zasada)\",\"isrc_art_w\":\"ca\u0142y \u015bwiat\",\"isrc_art_v\":\"ca\u0142y \u015bwiat, nadawanie automatyczne\",\"isrc_art_d\":\"ca\u0142y \u015bwiat, a tak\u017ce {tc}\",\"isrc_art_cs\":\"dawna Serbia i Czarnog\u00f3ra (nadawany przed 2006 r.)\",\"isrc_art_yu\":\"dawna Jugos\u0142awia (nadawany przed 2003 r.)\",\"isrc_art_im\":\"Wyspa Man (dawny przydzia\u0142; rejestruj\u0105cych obs\u0142uguje obecnie PPL UK)\",\"isrc_art_pr\":\"Portoryko (dawny przydzia\u0142)\",\"isrc_art_tc\":\"dawniej u\u017cywany przez TuneCore\",\"iswc_null\":\"Numer utworu 000000000 jest niedozwolony; ISO 15707 dopuszcza zakres od 000000001 do 999999999.\",\"nachschlagen\":\"Wyszukanie:\",\"link_abfrage\":\"wyszukiwarka ISRC, ISWC i kod\u00f3w kreskowych\",\"url_abfrage\":\"\\\/blog\\\/pl\\\/narzedzia\\\/isrc-iswc-barcode-lookup-musicbrainz\\\/\"};<\/p>\n<p>    \/\/ IFPI, ISRC Agency Code Allocations (Januar 2026): nur diese Zeichenpaare sind an den\n    \/\/ ersten beiden Stellen zulaessig (Bulletin 2015\/01). Wert: [Anzeigeland (leer = der Code\n    \/\/ selbst) oder Sonderart in Kleinbuchstaben, Index in AGENTUREN (-1 = keine)].\n    var AGENTUREN = [\"International ISRC Registration Authority\", \"CAPIF\", \"LSG\", \"ARIA\", \"COSCAP\", \"Pro-m\u00fasica Brazil\", \"SIMIM\", \"COSBOTS\", \"Re:Sound\", \"IFPI Switzerland\", \"IFPI Chile\", \"FONOTICA\", \"INTERGRAM\", \"BVMI\", \"GRAMEK DK\", \"SODINPRO\", \"EFU\", \"AGEDI\", \"IFPI Finland\", \"Recorded Music NZ\", \"SCPP\", \"PPL UK\", \"IFPI Greece\", \"IFPI (Hong Kong Group) Ltd\", \"ASIRI\", \"PPI\", \"IFPI Israel\", \"IMI\", \"SFH\", \"FIMI\", \"JAMMS\", \"RIAJ\", \"KMCA\", \"AGATA\", \"LaIPA\", \"AMPROFON\", \"RIM\", \"SENA\", \"Gramo\", \"PRODUCE\", \"UNIMPRO\", \"PARI\", \"ZPAV\", \"AFP\", \"SGP\", \"RIAA\", \"UPFR\", \"IFPI Sweden\", \"Recording Industry Association Singapore\", \"SLOVGRAM\", \"TECA\", \"MU-YAP\", \"COTT\", \"RIT\", \"Ukrainian Music Alliance\", \"Camara Uruguaya Del Disco\", \"RISA\"];\n    var PRAEFIXE = {AD:[\"\",0],AE:[\"\",0],AF:[\"\",0],AG:[\"\",0],AI:[\"\",0],AL:[\"\",0],AM:[\"\",0],AO:[\"\",0],AR:[\"\",1],AT:[\"\",2],AU:[\"\",3],AW:[\"\",0],AZ:[\"\",0],BA:[\"\",0],BB:[\"\",4],BC:[\"BR\",5],BD:[\"\",0],BE:[\"\",6],BF:[\"\",0],BG:[\"\",0],BH:[\"\",0],BI:[\"\",0],BJ:[\"\",0],BK:[\"BR\",5],BM:[\"\",0],BN:[\"\",0],BO:[\"\",0],BP:[\"BR\",5],BR:[\"\",5],BS:[\"\",0],BT:[\"\",0],BW:[\"\",7],BX:[\"BR\",5],BY:[\"\",0],BZ:[\"\",0],CA:[\"\",8],CB:[\"CA\",8],CD:[\"\",0],CF:[\"\",0],CG:[\"\",0],CH:[\"\",9],CI:[\"\",0],CL:[\"\",10],CM:[\"\",0],CN:[\"\",0],CO:[\"\",0],CP:[\"w\",0],CR:[\"\",11],CS:[\"cs\",0],CU:[\"\",0],CV:[\"\",0],CW:[\"\",0],CY:[\"\",0],CZ:[\"\",12],DE:[\"\",13],DG:[\"d\",0],DJ:[\"\",0],DK:[\"\",14],DM:[\"\",0],DO:[\"\",15],DZ:[\"\",0],EC:[\"\",0],EE:[\"\",16],EG:[\"\",0],ER:[\"\",0],ES:[\"\",17],ET:[\"\",0],FI:[\"\",18],FJ:[\"\",19],FO:[\"DK\",14],FR:[\"\",20],FX:[\"FR\",20],GA:[\"\",0],GB:[\"\",21],GD:[\"\",0],GE:[\"\",0],GG:[\"\",0],GH:[\"\",0],GI:[\"\",0],GL:[\"DK\",14],GM:[\"\",0],GN:[\"\",0],GQ:[\"\",0],GR:[\"\",22],GT:[\"\",0],GW:[\"\",0],GX:[\"GB\",21],GY:[\"\",0],HK:[\"\",23],HN:[\"\",0],HR:[\"\",0],HT:[\"\",0],HU:[\"\",0],ID:[\"\",24],IE:[\"\",25],IL:[\"\",26],IM:[\"im\",0],IN:[\"\",27],IQ:[\"\",0],IR:[\"\",0],IS:[\"\",28],IT:[\"\",29],JE:[\"\",0],JM:[\"\",30],JO:[\"\",0],JP:[\"\",31],KE:[\"\",0],KG:[\"\",0],KH:[\"\",0],KM:[\"\",0],KN:[\"\",0],KR:[\"\",32],KS:[\"KR\",32],KW:[\"\",0],KY:[\"\",0],KZ:[\"\",0],LA:[\"\",0],LB:[\"\",0],LC:[\"\",0],LI:[\"\",9],LK:[\"\",0],LR:[\"\",0],LS:[\"\",0],LT:[\"\",33],LU:[\"\",6],LV:[\"\",34],MA:[\"\",0],MC:[\"\",0],MD:[\"\",0],ME:[\"\",0],MF:[\"\",0],MG:[\"\",0],MK:[\"\",0],ML:[\"\",0],MM:[\"\",0],MN:[\"\",0],MO:[\"\",0],MP:[\"\",0],MR:[\"\",0],MS:[\"\",0],MT:[\"\",0],MU:[\"\",0],MV:[\"\",0],MW:[\"\",0],MX:[\"\",35],MY:[\"\",36],MZ:[\"\",0],NA:[\"\",0],NE:[\"\",0],NG:[\"\",0],NI:[\"\",0],NL:[\"\",37],NO:[\"\",38],NP:[\"\",0],NZ:[\"\",19],OM:[\"\",0],PA:[\"\",39],PE:[\"\",40],PF:[\"\",0],PG:[\"\",0],PH:[\"\",41],PK:[\"\",0],PL:[\"\",42],PR:[\"pr\",0],PS:[\"\",0],PT:[\"\",43],PY:[\"\",44],QA:[\"\",0],QM:[\"US\",45],QN:[\"w\",0],QR:[\"BR\",5],QT:[\"US\",45],QZ:[\"US\",45],RO:[\"\",46],RS:[\"\",0],RU:[\"\",0],RW:[\"\",0],SA:[\"\",0],SB:[\"\",0],SC:[\"\",0],SD:[\"\",0],SE:[\"\",47],SG:[\"\",48],SI:[\"\",0],SK:[\"\",49],SL:[\"\",0],SM:[\"\",0],SN:[\"\",0],SO:[\"\",0],SR:[\"\",0],SS:[\"\",0],ST:[\"\",0],SV:[\"\",0],SX:[\"\",0],SY:[\"\",0],SZ:[\"\",0],TC:[\"tc\",-1],TD:[\"\",0],TG:[\"\",0],TH:[\"\",50],TL:[\"\",0],TN:[\"\",0],TO:[\"\",19],TR:[\"\",51],TT:[\"\",52],TW:[\"\",53],TZ:[\"\",0],UA:[\"\",54],UG:[\"\",0],UK:[\"GB\",21],US:[\"\",45],UY:[\"\",55],UZ:[\"\",0],VC:[\"\",0],VE:[\"\",0],VG:[\"\",0],VN:[\"\",0],VU:[\"\",0],VV:[\"v\",0],XK:[\"\",0],YE:[\"\",0],YU:[\"yu\",0],ZA:[\"\",56],ZB:[\"ZA\",56],ZM:[\"\",0],ZW:[\"\",0],ZZ:[\"w\",0]};\n    \/\/ Nur fuer Dokumentation und Schulung, werden nie vergeben (Bulletin 2015\/01).\n    var BEISPIEL_PRAEFIXE = ['USS1Z', 'JMK40'];<\/p>\n<p>    \/\/ Oeffentliche Musikdatenbank (Kerndaten CC0); die Links oeffnet erst ein Klick.\n    var MB = 'https:\/\/musicbrainz.org\/';<\/p>\n<p>    \/\/ --- Pruefziffern -----------------------------------------------------------\n    \/\/ GS1: von rechts (ohne Pruefziffer) abwechselnd *3 und *1, Summe auf den\n    \/\/ naechsten Zehner ergaenzen. Gilt fuer GTIN-8, -12 (UPC-A), -13 (EAN), -14.\n    function gs1Pruefziffer(ohne) {\n        var summe = 0;\n        for (var i = ohne.length - 1, faktor = 3; i >= 0; i--, faktor = faktor === 3 ? 1 : 3) {\n            summe += (ohne.charCodeAt(i) - 48) * faktor;\n        }\n        return (10 - summe % 10) % 10;\n    }\n    \/\/ ISWC: 1 fuer das T, dann Ziffer i (1..9) mal i; Pruefziffer ergaenzt auf 10.\n    function iswcPruefziffer(neun) {\n        var summe = 1;\n        for (var i = 0; i < 9; i++) { summe += (i + 1) * (neun.charCodeAt(i) - 48); }\n        return (10 - summe % 10) % 10;\n    }\n\n    \/\/ --- Erkennen und Pruefen ------------------------------------------------------\n    function bereinigen(roh) {\n        return String(roh).trim().toUpperCase().replace(\/^ISRC[:\\s]*\/, '').replace(\/^ISWC[:\\s]*\/, '')\n            .replace(\/^(UPC|EAN|GTIN)[-\\s:]*\/, '').replace(\/[\\s.\\-_\u2010-\u2015]\/g, '');\n    }\n\n    function regionName(code) {\n        try {\n            if (typeof Intl !== 'undefined' &#038;&#038; Intl.DisplayNames) {\n                var n = new Intl.DisplayNames([T.sprache], { type: 'region' }).of(code);\n                if (n &#038;&#038; n !== code) { return n; }\n            }\n        } catch (e) { \/* unbekannter Code *\/ }\n        return null;\n    }\n\n    \/\/ Zweistelliges Bezugsjahr: bis zum laufenden Jahr 20xx, darueber 19xx.\n    function jahrLesen(yy, jetzt) {\n        var j = parseInt(yy, 10), heute = (jetzt || new Date()).getFullYear() % 100;\n        return j <= heute ? 2000 + j : 1900 + j;\n    }\n\n    \/\/ Anzeigename des Praefixes; null, wenn es nicht in der IFPI-Liste steht.\n    function praefixName(land) {\n        var p = PRAEFIXE[land];\n        if (!p) { return null; }\n        var art = p[0];\n        if (art === '' || \/^[A-Z]{2}$\/.test(art)) { return regionName(art || land) || (art || land); }\n        if (art === 'd') { return text('isrc_art_d', { tc: regionName('TC') || 'Turks and Caicos Islands' }); }\n        return T['isrc_art_' + art];\n    }\n\n    function pruefeIsrc(c, jetzt) {\n        var e = { typ: 'isrc', eingabe: c, teile: [], meldungen: [], urteil: 'ok' };\n        if (c.length !== 12) { e.urteil = 'fehler'; e.meldungen.push(text('isrc_laenge', { n: c.length })); return e; }\n        var land = c.slice(0, 2), reg = c.slice(2, 5), yy = c.slice(5, 7), nr = c.slice(7);\n        if (!\/^[A-Z]{2}$\/.test(land)) { e.urteil = 'fehler'; e.meldungen.push(T.isrc_land_zeichen); }\n        if (!\/^[A-Z0-9]{3}$\/.test(reg)) { e.urteil = 'fehler'; e.meldungen.push(T.isrc_reg_zeichen); }\n        if (!\/^\\d{2}$\/.test(yy)) { e.urteil = 'fehler'; e.meldungen.push(T.isrc_jahr_zeichen); }\n        if (!\/^\\d{5}$\/.test(nr)) { e.urteil = 'fehler'; e.meldungen.push(T.isrc_nr_zeichen); }\n        e.form = land + '-' + reg + '-' + yy + '-' + nr;\n        if (e.urteil === 'fehler') { return e; }\n        var name = praefixName(land), jahr = jahrLesen(yy, jetzt);\n        e.teile.push([T.teil_land, land + ' \u00b7 ' + (name || T.unbekannt)]);\n        if (name &#038;&#038; PRAEFIXE[land][1] >= 0) { e.teile.push([T.teil_agentur, AGENTUREN[PRAEFIXE[land][1]]]); }\n        e.teile.push([T.teil_registrant, reg]);\n        e.teile.push([T.teil_jahr, yy + ' \u00b7 ' + text(jahr < 1986 ? 'isrc_jahr_satz_alt' : 'isrc_jahr_satz', { jahr: jahr })]);\n        e.teile.push([T.teil_bezeichnung, nr]);\n        if (!name) {\n            e.urteil = 'fehler';\n            e.meldungen.push(text('isrc_praefix_unbekannt', { code: land }));\n        }\n        if (BEISPIEL_PRAEFIXE.indexOf(land + reg) !== -1) {\n            e.urteil = 'fehler';\n            e.meldungen.push(text('isrc_beispiel', { praefix: land + '-' + reg }));\n        }\n        if (land === 'TC' &#038;&#038; parseInt(yy, 10) >= 26) {\n            e.urteil = 'fehler';\n            e.meldungen.push(T.isrc_tc_jahr);\n        }\n        if (e.urteil !== 'fehler') {\n            var platzhalter = \/^(.)\\1{9}$\/.test(reg + yy + nr);\n            if (platzhalter) { e.urteil = 'warn'; e.meldungen.push(T.isrc_platzhalter); }\n            if (jahr < 1986) { e.urteil = 'warn'; e.meldungen.push(text('isrc_jahr_alt', { jahr: jahr })); }\n            if (!platzhalter) { e.link = MB + 'isrc\/' + c; e.abfrage = T.url_abfrage + '#code=' + c; }\n        }\n        return e;\n    }\n\n    function pruefeIswc(c) {\n        var e = { typ: 'iswc', eingabe: c, teile: [], meldungen: [], urteil: 'ok' };\n        if (!\/^T\\d{10}$\/.test(c)) {\n            e.urteil = 'fehler';\n            e.meldungen.push(\/^T\/.test(c) ? text('iswc_laenge', { n: c.length - 1 }) : T.iswc_ohne_t);\n            return e;\n        }\n        var neun = c.slice(1, 10), gegeben = c.charCodeAt(10) - 48, soll = iswcPruefziffer(neun);\n        e.form = 'T-' + neun.slice(0, 3) + '.' + neun.slice(3, 6) + '.' + neun.slice(6, 9) + '-' + gegeben;\n        e.teile.push([T.teil_werknummer, neun]);\n        e.teile.push([T.teil_pruefziffer, text('pruefziffer_satz', { gegeben: gegeben, soll: soll })]);\n        if (neun === '000000000') {\n            e.urteil = 'fehler';\n            e.meldungen.push(T.iswc_null);\n        } else if (gegeben !== soll) {\n            e.urteil = 'fehler';\n            e.meldungen.push(text('pruefziffer_falsch', { soll: soll, richtig: 'T-' + neun.slice(0, 3) + '.' + neun.slice(3, 6) + '.' + neun.slice(6, 9) + '-' + soll }));\n        }\n        if (e.urteil === 'ok') { e.link = MB + 'iswc\/' + e.form; e.abfrage = T.url_abfrage + '#code=' + e.form; }\n        return e;\n    }\n\n    function pruefeGtin(c) {\n        var typ = c.length === 12 ? 'upc' : (c.length === 13 ? 'ean' : (c.length === 14 ? 'gtin14' : 'gtin8'));\n        var e = { typ: typ, eingabe: c, form: c, teile: [], meldungen: [], urteil: 'ok' };\n        var gegeben = c.charCodeAt(c.length - 1) - 48, soll = gs1Pruefziffer(c.slice(0, -1));\n        e.teile.push([T.teil_pruefziffer, text('pruefziffer_satz', { gegeben: gegeben, soll: soll })]);\n        if (gegeben !== soll) {\n            e.urteil = 'fehler';\n            e.meldungen.push(text('pruefziffer_falsch', { soll: soll, richtig: c.slice(0, -1) + soll }));\n        }\n        if (typ === 'upc') {\n            e.teile.push([T.teil_ean, '0' + c]);\n        } else if (typ === 'ean' &#038;&#038; c.charAt(0) === '0') {\n            e.teile.push([T.teil_upc, c.slice(1)]);\n        } else if (typ === 'gtin14') {\n            e.urteil = e.urteil === 'fehler' ? 'fehler' : 'warn';\n            e.meldungen.push(T.gtin14_hinweis);\n        } else if (typ === 'gtin8') {\n            e.urteil = e.urteil === 'fehler' ? 'fehler' : 'warn';\n            e.meldungen.push(T.gtin8_hinweis);\n        }\n        if (e.urteil === 'ok' &#038;&#038; (typ === 'upc' || typ === 'ean')) { e.link = MB + 'search?query=barcode%3A' + c + '&#038;type=release&#038;method=advanced'; e.abfrage = T.url_abfrage + '#code=' + c; }\n        return e;\n    }\n\n    function pruefeEinen(roh, jetzt) {\n        var c = bereinigen(roh);\n        if (!c) { return null; }\n        if (\/^T\/.test(c) &#038;&#038; \/^T[\\d]*$\/.test(c)) { return pruefeIswc(c); }\n        if (\/^\\d+$\/.test(c)) {\n            if (c.length === 8 || c.length === 12 || c.length === 13 || c.length === 14) { return pruefeGtin(c); }\n            if (c.length === 10) {\n                return { typ: 'unbekannt', eingabe: c, teile: [], meldungen: [T.zehn_ziffern], urteil: 'fehler' };\n            }\n            return { typ: 'unbekannt', eingabe: c, teile: [], meldungen: [text('ziffern_laenge', { n: c.length })], urteil: 'fehler' };\n        }\n        if (\/^[A-Z]{2}\/.test(c) || c.length === 12) { return pruefeIsrc(c, jetzt); }\n        return { typ: 'unbekannt', eingabe: c, teile: [], meldungen: [T.nicht_erkannt], urteil: 'fehler' };\n    }\n\n    function zerlegen(text) {\n        return String(text).split(\/[\\n,;\\t]+\/).map(function (s) { return s.trim(); }).filter(function (s) { return s !== ''; });\n    }\n\n    \/\/ --- Darstellung --------------------------------------------------------------\n    function text(schluessel, werte) {\n        return String(T[schluessel]).replace(\/\\{(\\w+)\\}\/g, function (m, k) { return werte &#038;&#038; werte[k] !== undefined ? werte[k] : m; });\n    }\n    function el(id) { return document.getElementById(id); }\n    function neu(tag, klasse, inhalt) {\n        var x = document.createElement(tag);\n        if (klasse) { x.className = klasse; }\n        if (inhalt !== undefined) { x.textContent = inhalt; }\n        return x;\n    }\n\n    function karte(e, roh) {\n        var k = neu('div', 'codes-karte codes-' + e.urteil);\n        var kopf = neu('div', 'codes-kopf');\n        kopf.appendChild(neu('span', 'codes-typ', T['typ_' + e.typ]));\n        kopf.appendChild(neu('span', 'codes-form', e.form || roh));\n        kopf.appendChild(neu('span', 'codes-urteil codes-' + e.urteil, T['urteil_' + e.urteil]));\n        k.appendChild(kopf);\n        if (e.teile.length) {\n            var tab = neu('table');\n            e.teile.forEach(function (t) {\n                var tr = neu('tr');\n                tr.appendChild(neu('th', '', t[0]));\n                tr.appendChild(neu('td', '', t[1]));\n                tab.appendChild(tr);\n            });\n            k.appendChild(tab);\n        }\n        e.meldungen.forEach(function (m) { k.appendChild(neu('p', 'codes-meldung', m)); });\n        if (e.link) {\n            var zeile = neu('p', 'codes-meldung', T.nachschlagen + ' ');\n            var a = neu('a', '', 'MusicBrainz');\n            a.href = e.link;\n            a.target = '_blank';\n            a.rel = 'noopener noreferrer';\n            zeile.appendChild(a);\n            if (e.abfrage) {\n                \/\/ eigene Abfrage mit Code im Fragment: der Code erreicht den Server erst beim Nachschlagen\n                zeile.appendChild(document.createTextNode(' \u00b7 '));\n                var b = neu('a', '', T.link_abfrage);\n                b.href = e.abfrage;\n                zeile.appendChild(b);\n            }\n            k.appendChild(zeile);\n        }\n        return k;\n    }\n\n    function pruefenUndZeigen() {\n        var ausgabe = el('codes-ausgabe'), zaehler = el('codes-zaehler');\n        var liste = zerlegen(el('codes-eingabe').value).slice(0, 500);\n        ausgabe.textContent = '';\n        var anzahl = { ok: 0, warn: 0, fehler: 0 };\n        liste.forEach(function (roh) {\n            var e = pruefeEinen(roh);\n            if (!e) { return; }\n            anzahl[e.urteil]++;\n            ausgabe.appendChild(karte(e, roh));\n        });\n        zaehler.textContent = liste.length ? text('zaehler_satz', { gesamt: liste.length, ok: anzahl.ok, warn: anzahl.warn, fehler: anzahl.fehler }) : T.leer;\n        return anzahl;\n    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.CODES = {\n        T: T, PRAEFIXE: PRAEFIXE, AGENTUREN: AGENTUREN, gs1Pruefziffer: gs1Pruefziffer, iswcPruefziffer: iswcPruefziffer, bereinigen: bereinigen,\n        pruefeEinen: pruefeEinen, pruefeIsrc: pruefeIsrc, pruefeIswc: pruefeIswc, pruefeGtin: pruefeGtin, zerlegen: zerlegen,\n        jahrLesen: jahrLesen, regionName: regionName, praefixName: praefixName, pruefenUndZeigen: pruefenUndZeigen\n    };\n\n    if (!el('codes-wurzel') || !el('codes-eingabe')) { return; }\n    el('codes-pruefen').addEventListener('click', pruefenUndZeigen);\n    el('codes-beispiele').addEventListener('click', function () {\n        el('codes-eingabe').value = T.beispiele;\n        pruefenUndZeigen();\n    });\n    var warten = null;\n    el('codes-eingabe').addEventListener('input', function () {\n        clearTimeout(warten);\n        warten = setTimeout(pruefenUndZeigen, 400);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sprawdza kody ISRC, UPC, EAN-13 i ISWC z listy: rozpoznaje typ, weryfikuje budow\u0119 i cyfry kontrolne, por\u00f3wnuje przedrostki ISRC z list\u0105 IFPI, obja\u015bnia ka\u017cd\u0105 cz\u0119\u015b\u0107 i przelicza mi\u0119dzy UPC-A a EAN-13.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92906],"class_list":["post-18962","page","type-page","status-publish","hentry","tag-music-production-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Sprawdza kody ISRC, UPC, EAN-13 i ISWC z listy: rozpoznaje typ, weryfikuje budow\u0119 i cyfry kontrolne, por\u00f3wnuje przedrostki ISRC z list\u0105 IFPI, obja\u015bnia ka\u017cd\u0105 cz\u0119\u015b\u0107 i przelicza mi\u0119dzy UPC-A a EAN-13.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-17T12:28:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/isrc-upc-ean-iswc-validator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/isrc-upc-ean-iswc-validator\\\/\",\"name\":\"Walidator ISRC, UPC\\\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-17T10:39:33+00:00\",\"dateModified\":\"2026-09-17T12:28:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/isrc-upc-ean-iswc-validator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/isrc-upc-ean-iswc-validator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/isrc-upc-ean-iswc-validator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Walidator ISRC, UPC\\\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/","og_locale":"en_US","og_type":"article","og_title":"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog","og_description":"Sprawdza kody ISRC, UPC, EAN-13 i ISWC z listy: rozpoznaje typ, weryfikuje budow\u0119 i cyfry kontrolne, por\u00f3wnuje przedrostki ISRC z list\u0105 IFPI, obja\u015bnia ka\u017cd\u0105 cz\u0119\u015b\u0107 i przelicza mi\u0119dzy UPC-A a EAN-13.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/","og_site_name":"Lukas Wojcik - Blog","article_modified_time":"2026-09-17T12:28:35+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/","name":"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-17T10:39:33+00:00","dateModified":"2026-09-17T12:28:35+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/isrc-upc-ean-iswc-validator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Walidator ISRC, UPC\/EAN i ISWC: budowa i cyfry kontrolne kod\u00f3w wydawniczych"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/18962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=18962"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/18962\/revisions"}],"predecessor-version":[{"id":19611,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/18962\/revisions\/19611"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=18962"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=18962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}