X-URL-parser (Twitter)
Inleiding
X-links (Twitter) zijn van nature chaotisch. Dezelfde tweet kan aankomen als twitter.com-link, als x.com-link, als app-deellink met vijf trackingparameters, als trend-klik-zoeklink, als /photo/1-variantelink of als hashtag-link in elke taal. De inhoud is identiek – alleen de vorm van de URL verandert. De X-URL-parser (Twitter) is een gratis online tool die meer dan twintig X-linkformaten herkent, de tweet-ID extraheert, de trackingruis verwijdert en de link herbouwt als schone canonieke URL, officiële embed-URL of deel-intent-URL.
De parser is bedoeld voor iedereen die regelmatig met X-links werkt: socialmedia-managers die ze publiceren, communitymanagers die ze archiveren, marketeers die campagnes volgen, onderzoekers die ze op grote schaal verzamelen en ontwikkelaars die ze in databases opslaan. In plaats van elke link handmatig op te schonen of te vertrouwen op een verkorter die verbergt wat hij doet, plak je de link en zie je precies wat de parser heeft gevonden – het linktype, de gebruikersnaam, de inhouds-ID, de weergavevariant en de verwijderde parameters.
Twee eigenschappen onderscheiden deze tool. Hij analyseert direct, met een bijgewerkt resultaat bij elke toetsaanslag, en doet nul netwerkverzoeken – de link verlaat je browser nooit. Geen server, geen API-quotum, geen log van wat je plakt.
Gebruiksgevallen
Publicatie en campagnes. Voordat je een X-link in een nieuwsbrief, blogpost of advertentiereactie zet, maak je hem schoon met het canonieke formaat. Trackingparameters zoals s, t en twclid zijn gekoppeld aan de deelsessie, worden snel waardeloos en vervuilen analyserapporten. De canonieke URL publiceren houdt je inhoudslink stabiel en je statistieken eerlijk.
Archivering en deduplicatie. Als je X-links opslaat in een spreadsheet, CMS of onderzoeksdataset, kan dezelfde tweet in tientallen URL-vormen verschijnen – verschillende domeinen, varianten en parameterketens. De parser normaliseert alles naar één canonieke vorm, zodat twitter.com/jack/status/20, x.com/jack/status/20 en dezelfde link met ?s=20&t=… samenvallen tot één stabiele identificatie waarop je kunt dedupliceren.
Trendmonitoring. Trend-kliklinks zijn de rommeligste X-URL's die er bestaan: x.com/search?q=%23Gewitter&src=trend_click&vertical=trends. Elke tweet in je monitoringtabel komt in die vorm binnen. De parser herkent het patroon, normaliseert een enkele-hashtag-query naar de canonieke hashtagpagina en verwijdert de herkomstparameters – één plakken verandert een trendlink in een schone, deelbare URL.
Website-embeds. Wanneer je tweets op je eigen site publiceert, genereert het embed-formaat de officiële X-widget-URL (platform.twitter.com/embed/Tweet.html?id=…). Zet die in een iframe en X rendert de tweet met het officiële design – geen embed-diensten van derden, geen scraping.
Datahygiëne. Voor ontwikkelaars en onderzoekers is de parser ook een specificatiereferentie – de lijst met verwijderde parameters toont precies welke trackingsleutels X vandaag toevoegt, en de tabel met ondersteunde formaten documenteert elke route die de tool herkent.
Anatomie van een X-link
Een X-link heeft drie delen die het waard zijn om te begrijpen: de host, het pad en de querystring.
Bekijk een echte tweetlink zoals de mobiele app die deelt:
https://twitter.com/markito0171/status/2089759704335482961/video/1?s=20&t=FakeNonce&ref_src=twsrc%5Etfw
De host twitter.com (of x.com, mobile.twitter.com) vertelt de parser tot welke familie de link behoort. Het pad /markito0171/status/2089759704335482961/video/1 benoemt de route – hier een tweet met een video-weergavevariant. De querystring mengt twee soorten parameters die de parser heel verschillend behandelt:
| Parameter | Soort | Wat de parser doet |
|---|---|---|
2089759704335482961 (pad) |
Identiteit | Behoudt hem – dit is de Snowflake-ID van de tweet |
/video/1 (pad) |
Weergavevariant | Behoudt de tweet, noteert de variant – dezelfde tweet gerenderd als video |
s=20 |
Tracking | Verwijdert hem – tijdstempel van het deelsheet |
t=FakeNonce |
Tracking | Verwijdert hem – deel-nonce-token |
ref_src=twsrc^tfw |
Tracking | Verwijdert hem – herkomstverwijzing (hier Twitter-voor-web-embed) |
Identiteitsparameters vertellen je naar welke tweet, profiel, lijst, Space, evenement of hashtag de link wijst. Al het andere is context – hoe je er kwam, uit welke app, welke weergave openstond. De parser behoudt de identiteit en gooit de context weg, en meldt daarna de verwijderde sleutels zodat de opschoning controleerbaar is.
De twee domeinen. X veranderde in 2023 zijn naam van Twitter naar X, en x.com werd in 2024 het hoofddomein. Beide domeinen leveren dezelfde inhoud en verwijzen naar elkaar door, en links die van beide plaatsen zijn gekopieerd werken identiek. De parser accepteert beide plus het oude mobile.twitter.com-subdomein en geeft de canonieke vorm altijd op x.com – het domein waar X vandaag zelf naartoe verwijst.
De interne /i/-routes. Een tweede linkfamilie leeft onder /i/: x.com/i/web/status/{id} (de tweetroute van de web-app wanneer een tweet-URL zonder gebruikersnaam wordt geopend), x.com/i/spaces/{id} (live audio-Spaces), x.com/i/lists/{id} (lijsten op ID) en x.com/i/events/{id} (tijdlijnen en Moments). De parser herkent elk ervan en brengt ze terug naar hun canonieke vorm.
Hoe het werkt
De analyse vindt volledig in je browser plaats, zonder netwerkverzoeken en zonder server-retour. Bij elke toetsaanslag gaat de link door drie fasen:
- Hostmatch. De link wordt vergeleken met de X-domeinen:
twitter.comenx.com, met elk subdomein zoalsmobile.ofwww.. Gelijkende domeinen zoalsevilx.comworden afgewezen. - Routematch. Het pad wordt opgedeeld in segmenten en vergeleken met de tabel van bekende routes –
{gebruiker}/status/{id},i/web/status,i/spaces,i/lists,i/events,hashtag,search, profielwortels en profieltab-paden. - Query-analyse. De
q-parameter van zoeklinks wordt gedecodeerd en geclassificeerd, terwijl trackingparameters volgens drie regels worden herkend en aan de verwijderde-lijst worden toegevoegd.
Elke geëxtraheerde waarde wordt vóór acceptatie gevalideerd tegen strikte patronen: tweet-ID's moeten 15–19 cijfers hebben, gebruikersnamen 1–15 letters, cijfers of underscores, en hashtags tot 30 tekens in elk Unicode-schrift. Alles wat de validatie niet doorstaat, zorgt ervoor dat de parser een ongeldige link meldt in plaats van te raden.
Omdat er geen netwerktoegang is, heeft de parser nooit een laadstatus nodig, komt hij nooit een rate limit tegen en levert hij resultaten op het moment dat je plakt.
Ondersteunde linkformaten
De parser herkent meer dan twintig formaten in zeven resultaatsoorten.
| Formaat | Voorbeeld | Resultaatsoort |
|---|---|---|
| Tweet met gebruikersnaam | x.com/elonmusk/status/1234567890123456789 |
tweet |
| Tweet op het oude domein | twitter.com/jack/status/20 |
tweet |
| Tweet op mobiel subdomein | mobile.twitter.com/elonmusk/status/1234567890123456789 |
tweet |
| Web-app-route (zonder gebruikersnaam) | x.com/i/web/status/1234567890123456789 |
tweet |
| Fotoweergave van tweet | x.com/elonmusk/status/1234567890123456789/photo/1 |
tweet (variant photo) |
| Videoweergave van tweet | x.com/elonmusk/status/1234567890123456789/video/1 |
tweet (variant video) |
| Taalweergave van tweet | x.com/elonmusk/status/1234567890123456789/lang/zh |
tweet (variant lang: zh) |
| Analytics-weergave van tweet | x.com/elonmusk/status/1234567890123456789/analytics |
tweet (variant analytics) |
| Eenvoudig profiel | x.com/elonmusk |
profile |
| Profieltab | x.com/elonmusk/with_replies |
profile |
| Lijst op slug | x.com/elonmusk/lists/tech-leaders |
list |
| Lijst op ID | x.com/i/lists/1234567890123456789 |
list |
| Live-Space | x.com/i/spaces/1zqKVZlLKvPJB |
space |
| Evenement of Moment | x.com/i/events/1234567890123456789 |
event |
| Hashtagpagina | x.com/hashtag/tech |
hashtag |
| Unicode-hashtagpagina | x.com/hashtag/日本 |
hashtag |
| Hashtag-zoekopdracht (genormaliseerd) | x.com/search?q=%23Gewitter&src=trend_click |
hashtag |
| Trefwoordzoekopdracht | x.com/search?q=hello+world |
search |
Profieltabs worden generiek geaccepteerd: elk woord in kleine letters in het tweede padsegment – with_replies, media, likes, following, followers, lists, moments en elke toekomstige tab – lost op naar het profiel zelf, omdat een tab een weergave van het profiel is en geen eigen bron.
De parser wijst ook routes af die geen deelbare X-inhoud zijn. Platformzaken zoals home, explore, login, settings, messages en notifications geven een ongeldig-melding, net als gebroken vormen zoals een puur numerieke gebruikersnaam (x.com/1234567890), een tweet-ID zonder 15–19 cijfers (x.com/gebruiker/status/1234) of een lege route zonder identificatie (x.com/hashtag/). De volledige blokkeerlijst staat in het hoofdstuk "Technische specificaties".
Snowflake-ID's begrijpen
Elke tweet heeft een numerieke ID, en het getal is niet willekeurig. X bouwt tweet-ID's in het Snowflake-formaat: een 64-bits geheel getal met drie delen – een 41-bits tijdstempel in milliseconden sinds het eigen tijdperk van 4 november 2010, een 10-bits machine-identificatie en een 12-bits volgordeteller per machine.
Wat dit in de praktijk betekent:
- De ID codeert de exacte milliseconde van plaatsing. De ID
2089759704335482961decodeert bijvoorbeeld naar een plaatsingstijd in augustus 2026 – dat kun je met elke Snowflake-decoder zelf controleren, zonder API. - De ID's zijn gegroeid van 15 cijfers in 2010 naar 19 cijfers vandaag, omdat de tijdstempelbits blijven groeien. De parser accepteert 15–19 cijfers en bestrijkt daarmee de hele geschiedenis van het platform.
- De ID is de stabiele sleutel van de tweet. Anders dan gebruikersnamen (die kunnen veranderen) en URL-vormen (die variëren), verandert de Snowflake nooit – gebruik hem om links in een database te dedupliceren, de tweet te zoeken of in een CMS te refereren.
De parser valideert de vorm van de ID maar decodeert hem niet – het decoderen van de tijdstempel is het werk van een speciale Snowflake-decoder. Voor het opschonen van links telt dat de parser nooit een willekeurig getal voor een tweet-ID aanziet en nooit raadt wanneer de vorm onjuist is.
Zoeklinks en hashtag-normalisatie
Wanneer je op X op een trend of hashtag klikt, stuurt het platform je niet naar een schone URL. Het stuurt je naar een zoekpagina met een gecodeerde query:
https://x.com/search?q=%23Gewitter&src=trend_click&vertical=trends
De q-parameter is de eigenlijke zoekopdracht – hier, percent-gecodeerd, de enkele hashtag #Gewitter. De rest is aankomstcontext: src=trend_click noteert dat je van een trend kwam en vertical=trends selecteert de trends-weergave.
De parser behandelt deze links op twee manieren:
| Queryvorm | Voorbeeld | Resultaat |
|---|---|---|
| Exact één hashtag | q=%23Gewitter |
Normaliseert naar de canonieke hashtagpagina x.com/hashtag/Gewitter |
| Exact één hashtag, elk schrift | q=%23%E6%97%A5%E6%9C%AC (日本) |
Normaliseert naar x.com/hashtag/日本 |
| Platte tekst of meerdere termen | q=hello+world, q=%23foo+%23bar |
Blijft een zoeklink x.com/search?q=hello%20world |
Waarom überhaupt normaliseren? Een hashtag-zoekopdracht en de hashtagpagina tonen dezelfde inhoud, maar de URL van de hashtagpagina is stabiel, kort en deelbaar – en het is de vorm die X zelf in profielen en bios gebruikt. De normalisatie bespaart je het handmatig corrigeren van elke trendlink in je tabel.
Zuivere trefwoordzoekopdrachten worden niet genormaliseerd (er is geen canonieke pagina voor een willekeurige query), dus de parser houdt ze als zoeklinks, terwijl hij de aankomstcontext (src, vertical, f) toch verwijdert. Zoekopdrachten met lege of ontbrekende q worden als ongeldig afgewezen.
Trackingparameters die we verwijderen
X voegt een lange lijst parameters aan links toe, en de parser verwijdert ze volgens drie herkenningsregels:
- Campagneparameters – elke sleutel met
utm_-voorvoegsel (Google Analytics-conventie):utm_source,utm_medium,utm_campaign,utm_term,utm_content. - Interne tokens – elke sleutel met een dubbel underscore-voorvoegsel.
- De exacte lijst – 19 bekende tracking-, sessie- en navigatieparameters.
De meest voorkomende parameters van de exacte lijst:
| Parameter | Wat hij noteert |
|---|---|
s |
Deel-tijdstempel uit het deelsheet van de mobiele app |
t |
Deel-nonce-token, gekoppeld aan s |
twclid |
X-klik-ID – uit welke advertentie of welk zoekresultaat de klik kwam |
ref_src |
Herkomstverwijzing, bijvoorbeeld twsrc^tfw voor Twitter-voor-web-embeds |
ref_url |
De pagina waarop de link is aangeklikt |
ref |
Korte vorm van de verwijzer |
src |
Aankomstcontext: trend_click, hashtag_click, tren (trending) en dergelijke |
cn |
E-maildeel-trackingtoken (vaak base64-achtig) |
iid |
Campagne-instantie-ID uit advertenties |
ntref |
Meldingcontext |
ft |
Intern webclienttoken |
lang |
Taaloverride voor de weergave |
vertical |
Selector voor de zoekweergave: trends, news, users |
f |
Zoekfilter: live, user, image, video |
p, rd, rnd, cxt, bp |
Oudere app-contexttokens, samengevat onder één regel |
Identiteitsparameters worden nooit verwijderd: de tweet-ID in het pad, de lijst-ID, de Space-ID en de q van een zoeklink zijn de inhoud zelf. Ze verwijderen zou de link breken.
Waarom is verwijderen altijd veilig? Trackingparameters beschrijven hoe je er kwam, niet waar de link naartoe wijst. twclid, src en utm_* veranderen alleen de attributierapporten; de gerenderde inhoud is er zonder identiek. De regel "Verwijderde parameters" toont precies wat er is verwijderd, zodat de opschoning in één oogopslag controleerbaar is.
Gids voor uitvoerformaten
Elke geanalyseerde link kan in drie formaten worden uitgevoerd.
| Formaat | Uitvoer | Wanneer gebruiken |
|---|---|---|
| Canonieke URL | De schone, stabiele link op x.com |
Publicatie, archivering, deduplicatie, alles wat een link langdurig opslaat |
| Embed-URL | De officiële widgetpagina platform.twitter.com/embed/Tweet.html?id=… |
In een <iframe> zetten om een tweet op je eigen site te renderen |
| Deel-URL | Een officiële intent-URL (intent/retweet, intent/user, intent/tweet) |
Deelbuttons en campagne-links |
Het canonieke formaat geeft altijd het x.com-domein – het huidige merk – ongeacht welk domein je hebt geplakt. Hashtag-zoekopdrachten worden genormaliseerd naar hashtagpagina's en profieltabs vallen terug op de profielwortel.
Het embed-formaat bestaat alleen voor tweets, omdat de X-embed-widget tweets rendert. Het genereert dezelfde widget-URL die X's eigen embed-script in een iframe laadt – open hem in je browser en je ziet de tweet gerenderd met het officiële design. De radio-optie wordt automatisch verborgen voor profielen, lijsten, Spaces en hashtags, waarvoor geen widget bestaat.
Het deel-formaat kiest de passende intent voor de inhoud: tweets gebruiken intent/retweet?tweet_id=… (opent de retweet-dialoog voor die tweet), profielen intent/user?screen_name=…, en hashtags intent/tweet?hashtags=… (stelt een tweet op met vooraf gevulde hashtag). Intents leven op twitter.com – de historische intent-host – en X lost ze op beide domeinen op.
Gebruik
- Plak de link. Klik op het invoerveld en plak de X-URL (Ctrl+V of Cmd+V). De parser leest hem tijdens het typen – er is geen knop om in te drukken.
- Lees het resultatenvenster. Vijf regels vatten de analyse samen:
| Regel | Wat hij toont |
|---|---|
| Soort | De resultaatsoort: tweet, profile, list, space, event, hashtag of search |
| Gebruikersnaam | De handle uit de URL, als klikbare link naar het profiel |
| Inhouds-ID | De geëxtraheerde ID – tweet-Snowflake, lijst-ID, Space-ID of hashtag-tag |
| Variant | De weergavevariant van een tweet (photo, video, lang: zh, analytics) – leeg bij normale tweets |
| Verwijderde parameters | De verwijderde trackingparameters, door komma's gescheiden |
- Kies het uitvoerformaat. Canonieke URL is de standaard. Schakel naar Embed-URL (alleen tweets) of Deel-URL wanneer je een van deze vormen nodig hebt. Formaten die niet van toepassing zijn op het huidige linktype worden automatisch verborgen.
- Kopieer het resultaat. Het uitvoerveld werkt direct bij; druk op Kopiëren om het in het klembord te plaatsen.
Stapsgewijze handleiding
Volg een volledig voorbeeld, van een trend-kliklink tot de gepubliceerde schone URL.
Stap 1 – Plak een trend-kliklink. Kopieer deze link, precies zoals hij binnenkomt wanneer je in de X-app op een trend klikt:
https://x.com/search?q=%23Gewitter&src=trend_click&vertical=trends&twclid=abc123xyz
Plak hem in de invoer. Het resultatenvenster vult zich direct: soort hashtag, inhouds-ID Gewitter en de verwijderde parameters src, vertical, twclid.
Stap 2 – Kopieer de canonieke URL. De uitvoer toont de schone hashtagpagina:
https://x.com/hashtag/Gewitter
De enkele-hashtag-query is genormaliseerd naar de canonieke hashtagroute – de URL die X zelf in profielen en bios gebruikt.
Stap 3 – Maak een gedeelde tweet schoon. Plak een app-deellink met volledige parameterketen:
https://twitter.com/markito0171/status/2089759704335482961/video/1?s=20&t=FakeNonce&ref_src=twsrc%5Etfw
Het soort toont tweet, de gebruikersnaam linkt het profiel, de ID is 2089759704335482961, de variant toont video, en de verwijderde-lijst toont s, t, ref_src. De canonieke uitvoer klapt alles samen tot https://x.com/markito0171/status/2089759704335482961 – de /video/1-weergave is dezelfde tweet, dus de schone link wijst naar de tweet zelf.
Stap 4 – Embed de tweet. Schakel naar Embed-URL. De uitvoer wordt https://platform.twitter.com/embed/Tweet.html?id=2089759704335482961. Zet hem in een iframe op je site:
<iframe src="https://platform.twitter.com/embed/Tweet.html?id=2089759704335482961"
width="550" height="600" style="border:none;overflow:hidden" frameborder="0"
allowfullscreen="true"></iframe>
Stap 5 – Verwerk een Unicode-hashtag. Plak https://x.com/hashtag/%E6%97%A5%E6%9C%AC?src=hashtag_click. Het soort toont hashtag, de ID is 日本 (gedecodeerd uit het percent-gecodeerde pad), en de canonieke uitvoer is de gecodeerde schone vorm https://x.com/hashtag/%E6%97%A5%E6%9C%AC.
Stap 6 – Deel een profiel. Plak https://x.com/elonmusk en schakel naar Deel-URL. De uitvoer wordt https://twitter.com/intent/user?screen_name=elonmusk – de officiële volg-intent, klaar voor een deelbutton.
Professionele tips
- Dedupliceer archieven op de inhouds-ID. Wanneer je een tabel in batches opschoont, is de inhouds-ID-regel je stabiele sleutel: dezelfde tweet geeft altijd dezelfde Snowflake, ongeacht via welk domein, welke variant of welke parameterketen hij kwam. Sorteer en dedupliceer op die kolom, niet op de URL.
- Normaliseer trendlinks voordat je ze opslaat. Trend-klikken zijn de rommeligste X-links, en alle vallen met één plakken terug op een schone hashtagpagina. Bouw je monitoringworkflow rond de canonieke hashtagvorm.
- Gebruik embed-URL's met de officiële iframe. De X-embed-widget-URL heeft geen extra JavaScript op je pagina nodig – alleen de iframe uit de handleiding. De widget regelt de responsive breedte en rendert het officiële tweet-design.
- Gebruik deel-intents in campagnes. Het deel-URL-formaat genereert officiële intentlinks voor retweet-, volg- en hashtag-opstel-acties. Ze werken zonder API-sleutel en openen X's eigen dialogen.
- Beschouw de verwijderde-lijst als monitorsignaal. X verandert zo nu en dan zijn trackingvocabulaire. Als er een parameter in de verwijderde-lijst verschijnt die je nooit hebt gezien, is een blik waard – de parser toont precies wat het platform vandaag toevoegt.
- Profieltabs klappen automatisch samen. Corrigeer
x.com/elonmusk/with_repliesniet handmatig naarx.com/elonmuskin een tabel – de parser doet het voor je en houdt de gebruikersnaam-regel intact. - Plak links van overal. De parser accepteert beide domeinen en alle subdomeinen, dus links uit de app, het web, nieuwsbrieven of e-mails werken zonder normalisatie.
Alternatieven
| Optie | Sterke punten | Zwakke punten |
|---|---|---|
| Deze parser | Nul verzoeken, direct, Snowflake-bewust, meer dan 20 formaten, embed- en deel-bouwer, controleerbare verwijderde-lijst, Unicode-hashtags | Geen API-toegang tot metadata zoals tweettekst of engagementcijfers |
| Handmatig corrigeren in de adresbalk | Geen tools nodig | Foutgevoelig bij lange parameterketens, tweet-ID makkelijk per ongeluk verwijderd, geen embed- of deel-formaten |
| Generieke URL-schoonmakers | Eenvoudig in gebruik | Gebouwd voor verkorters en algemene links, niet voor X-routes; meestal blind voor Snowflake-ID's, weergavevarianten en zoeknormalisatie |
| Browser-extensies voor linkschoning | Automatisch op geselecteerde pagina's | Extensies zien elke link die je surft, vereisen installatie en rechten en dekken X-specifieke formaten zelden af |
| X-API (officieel) | Volledige metadata, zoeken en plaatsen | Pay-per-use sinds februari 2026 zonder gratis tier – zie het volgende hoofdstuk; zonder sleutel niet bruikbaar vanuit de browser |
Voor eenmalige opschoning is het canonieke formaat van deze parser de snelste weg; voor batchonderzoek met metadata kan een X-API-account passen – maar het is een ontwikkelaarstool, geen linkschoonmaker.
Vergeleken met de officiële API's
De X-API had ooit een gratis tier. Dat veranderde in 2023 en opnieuw in 2026: X schakelde in februari 2026 over op pay-per-use, schrapte de gratis tier en sloot de oude Basic- en Pro-abonnementen voor nieuwe aanmeldingen. Eén post lezen kost ongeveer $0,005 (rond $5 per 1.000 tweets) en profiellezingen het dubbele. Er is geen gratis quotum om mee te prototypen.
Deze parser roept de API bewust niet aan. Een lokale parser dekt wat de betaalde API niet kan:
| Situatie | Lokale parser | X-API |
|---|---|---|
| Linkschoning voor elk archief | Direct, onbeperkt, offline | Kost per leesverzoek |
| Trendlink-normalisatie | Lokaal geanalyseerd | Vereist een zoek-endpoint-call per link |
| Privacy | Link verlaat de browser nooit | Gaat naar X-servers en wordt gefactureerd |
| Kosten | Gratis, zonder quotum | Vanaf $0,005 per postlezing, zonder gratis tier |
De parser beantwoordt de vraag wat is deze link en wat is zijn schone vorm? – een vraag die geen API, geen sleutel en geen quotum nodig heeft. Als je naast opschonen ook tweetmetadata nodig hebt, is een API-account een aparte beslissing; de schone canonieke URL die deze tool genereert, is precies wat je zo'n API toch zou voeren.
Wat de tool niet doet
Hij kan t.co-kortlinks niet oplossen. Elke op X geplaatste link wordt automatisch verkort tot een t.co-URL, en de bestemming is alleen te ontdekken door de doorverwijzing te volgen. Browsers kunnen de doorverwijsbestemming niet lezen omdat CORS het niet toestaat, en een nul-verzoeken-parser raadt nooit. Open de kortlink één keer en kopieer de lange URL uit de adresbalk – de parser verwerkt hem direct.
Hij wijst spiegels van derden af. Nitter-instanties (nitter.net/…) en previewdiensten zoals fxtwitter.com en vxtwitter.com zijn geen X-domeinen en worden afgewezen. Alleen twitter.com en x.com (met elk subdomein) worden geaccepteerd.
Hij wijst niet-inhoudsroutes af. Platformzaken zoals home, explore, login, settings, messages, notifications, compose, intent en share zijn geen deelbare inhoud en worden als ongeldig afgewezen, net als lege routes zonder identificatie (x.com/hashtag/, x.com/i/spaces/).
Hij haalt geen metadata op. Er gaat geen verzoek naar X, dus de parser toont nooit tweettekst, auteurnamen, engagementcijfers of plaatsingsdata. Hij beantwoordt wat is deze link en wat is zijn schone vorm? – niets meer. (De Snowflake-ID zelf codeert de plaatsingstijd, maar decoderen is het werk van een speciale decoder.)
Hij verandert niets. De tool verkort, verwijst door, slaat geen links op en geeft ze niet door. De uitvoer is een URL die je meeneemt.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Een korte t.co-link wordt als ongeldig gemarkeerd | Kortlinks kunnen in de browser door CORS niet worden opgelost | Open de kortlink één keer en plak de lange URL uit de adresbalk |
| "Voer een geldige X-URL (Twitter) in" verschijnt | De link gebruikt een geblokkeerde route zoals home of login, een gebroken vorm of een niet-X-domein |
Controleer of de link echt van X is gekopieerd. Geblokkeerde routes worden bewust afgewezen omdat ze geen inhoud zijn |
| Een zoeklink toont search in plaats van hashtag | De query is platte tekst of bevat meerdere termen | Correct gedrag – alleen enkele-hashtag-queries worden genormaliseerd naar hashtagpagina's |
Een trendlink toont verwijderde parameters src en vertical |
Dat zijn aankomstcontextparameters, geen inhoud | Verwacht gedrag – de canonieke uitvoer is de schone hashtag- of zoeklink |
| De embed-radio-optie ontbreekt | Embed-widgets bestaan alleen voor tweets | Correct gedrag – profielen, lijsten, Spaces en hashtags hebben geen widgetpagina |
| Een Unicode-hashtag toont verminkte tekens | De tag is in de URL percent-gecodeerd | De parser decodeert hem – de inhouds-ID-regel toont de gedecodeerde tag (bijvoorbeeld 日本) en de canonieke uitvoer codeert hem veilig opnieuw |
| Een tweet-ID wordt afgewezen | De ID heeft niet 15–19 cijfers | Controleer of de link volledig is gekopieerd, inclusief de laatste cijfers |
De uitvoer laat de /photo/1-weergave weg |
Weergavevarianten zijn dezelfde tweet | Correct gedrag – de canonieke URL wijst naar de tweet zelf; de variant-regel noteert de oorspronkelijke weergave |
Privacy en gegevensverwerking
Deze tool doet nul netwerkverzoeken. De URL die je plakt, wordt volledig in je browser verwerkt: geen server ontvangt hem, geen analyticscript ziet hem, geen log van derden noteert hem. Er is geen account, geen opslag en geen manier voor de tool om te weten wat je na het sluiten van de pagina hebt geplakt.
Dit onderscheidt de parser concreet van API-gestuurde tools: de link, zijn tweet-ID en zijn gebruikersnaam passeren nooit een server die je niet controleert. Je kunt links vóór publicatie, interne campagne-links of privé doorgestuurde links opschonen zonder dat ze in logs van derden verschijnen.
De parser laadt ook geen scripts van derden. De embed-URL die hij genereert, wijst naar X's eigen widgetpagina, en X ziet die URL's alleen als je ze zelf opent of embed – de parser laadt ze nooit.
Technische specificaties
| Eigenschap | Waarde |
|---|---|
| Verwerking | 100 % client-side, nul netwerkverzoeken |
| Update-model | Realtime bij elke toetsaanslag |
| Geaccepteerde hosts | twitter.com, x.com (elk subdomein), mobile.twitter.com |
| Resultaatsoorten | tweet, profile, list, space, event, hashtag, search |
| Tweet-ID-patroon (Snowflake) | 15–19 cijfers (\d{15,19}) |
| Gebruikersnaampatroon | 1–15 letters, cijfers of underscores, niet puur numeriek |
| Hashtag-tagpatroon | 1–30 tekens van Unicode-letters, cijfers of underscores ([\p{L}\p{N}_]{1,30}), gedecodeerd uit percent-encoding |
| Space-ID-patroon | 10–15 alfanumerieke tekens |
| Lijst-slugpatroon | 1–40 alfanumerieke tekens, underscores of streepjes |
| Profieltab-regel | Elk woord-slug in kleine letters in het tweede padsegment, niet numeriek |
| Zoekregel | q vereist; exact één #hashtag normaliseert naar de hashtagpagina |
| Trackingparameter-regels | utm_*-voorvoegsel, __-voorvoegsel en een exacte lijst van 19 sleutels |
| Behoud van identiteitsgegevens | Tweet-ID, gebruikersnaam, lijst-ID, Space-ID, evenement-ID, hashtag-tag, zoek-q |
| Uitvoerformaten | Canonieke URL (x.com), embed-URL (tweet-widgetpagina), deel-URL (retweet-/volg-/hashtag-intents) |
| Afhankelijkheden | Geen – puur JavaScript, geen frameworks |
| Browserondersteuning | Moderne evergreen-browsers (Chrome, Edge, Firefox, Safari) met URLSearchParams en Unicode-property-escapes |
De blokkeerlijst is: home, explore, search, intent, share, compose, messages, notifications, settings, login, signup, help, tos, privacy, about, download, jobs, developers, analytics, support, feedback, blog, media, status, s, bookmarks, i, hashtag, lists.
Functies
- Analyseert meer dan 20 X-linkformaten (Twitter) – tweets, profielen, lijsten, Spaces, evenementen, hashtags en zoeklinks, op twitter.com en x.com
- Verwijdert automatisch trackingparameters zoals twclid, ref_src, src en utm_* en toont precies wat er is verwijderd
- Extraheert de tweet-ID en normaliseert hashtag-zoeklinks naar canonieke hashtagpagina's
- Maakt canonieke x.com-URL's, officiële embed-widget-URL's en deel-intent-URL's met één klik
- Begrijpt Unicode-hashtags zoals 日本, URL-varianten zoals /photo/1 en de interne /i/-routes
- Analyseert direct in je browser met nul verzoeken – je links verlaten je apparaat nooit