Che cos'è questo strumento?
Un effetto glitch CSS simula l'aspetto di un segnale televisivo corrotto o di una cassetta VHS danneggiata duplicando un testo due volte con gli pseudo-elementi ::before e ::after, spostando leggermente ogni copia con un'ombra di testo colorata (classicamente rosso e ciano, che richiamano gli errori del segnale RGB analogico), e animando il clip-path di ogni copia con @keyframes così che diverse fasce orizzontali di ciascuna copia colorata lampeggino nel tempo.
La tecnica non richiede immagini, né un loop di animazione JavaScript, né canvas — è puro CSS sovrapposto su un unico elemento HTML che porta il proprio testo due volte: una come contenuto testuale reale, e una tramite un attributo data-text che gli pseudo-elementi leggono con content: attr(data-text).
Fonte: CSS Pseudo-Elements Module Level 4, W3C — definisce gli pseudo-elementi ::before/::after e la funzione attr() su cui si basa questo effetto.
Perché usarlo?
- Anteprima animata dal vivo — vedi il vero effetto glitch mentre scrivi e regoli le impostazioni, non solo un mockup statico.
- Due colori d'accento regolabili in modo indipendente, con il classico rosso/ciano come default ma personalizzabili per qualsiasi brand o tema.
- Il cursore dell'intensità regola lo spostamento in pixel dell'ombra colorata; quello della velocità controlla quanto è rapido il ciclo dei keyframes del clip-path.
- Copia sia il CSS (compresi i blocchi @keyframes completi) sia la struttura HTML esatta necessaria, poiché l'effetto dipende da un attributo data-text che corrisponda al testo visibile.
- CSS puro — nessun JavaScript a runtime una volta sulla tua pagina, e nessuna libreria esterna o immagine da caricare.
- Gratis, senza registrazione, funziona interamente nel tuo browser.
Come si usa
- Scrivi il testo che vuoi rendere glitchato nel campo di testo — l'anteprima si aggiorna immediatamente.
- Scegli due colori d'accento; il default classico è rosso e ciano per un look retrò a separazione RGB, ma qualsiasi coppia di colori contrastanti funziona.
- Regola il cursore dell'intensità per controllare quanto sono distanziati i due strati di colore — valori più alti si leggono come un glitch più aggressivo.
- Regola il cursore della velocità per controllare quanto velocemente lampeggia il glitch.
- Copia il blocco CSS e incollalo nel tuo foglio di stile.
- Copia lo snippet HTML e usalo esattamente così com'è — l'attributo data-text deve corrispondere esattamente al testo visibile dell'elemento affinché l'effetto funzioni.
Esempio
Input
Testo: "GLITCH" · Colore 1: #ff0040 (rosso) · Colore 2: #00fff9 (ciano) · Intensità: 5pxRisultato
<div class="glitch" data-text="GLITCH">GLITCH</div>
.glitch::before { text-shadow: 5px 0 #ff0040; ... }
.glitch::after { text-shadow: -5px 0 #00fff9; ... }Il testo di base resta bianco mentre le sue due copie negli pseudo-elementi lampeggiano in rosso e ciano ai lati, producendo il classico look da segnale corrotto.
Perché l'elemento ha bisogno di un attributo data-text
Gli pseudo-elementi ::before e ::after non possono leggere direttamente il normale contenuto testuale di un elemento — content: attr() in CSS funziona solo con veri attributi HTML, non con nodi di testo figli. Ecco perché l'HTML generato ripete il testo come attributo data-text="..." sullo stesso elemento: il testo visibile viene renderizzato normalmente, mentre ogni pseudo-elemento ottiene indipendentemente la stessa stringa tramite content: attr(data-text) e sovrappone la propria copia animata e spostata di colore.
Come viene prodotto il lampeggio
Ogni pseudo-elemento è animato con un proprio blocco @keyframes che scorre una serie di valori clip-path: inset(...). A ogni keyframe viene rivelata una fascia orizzontale diversa della copia colorata mentre il resto viene ritagliato, così il frammento visibile di rosso (o ciano) salta verticalmente mentre l'animazione viene riprodotta — combinato con lo spostamento dell'ombra colorata, questo si legge come canali di colore strappati e disallineati piuttosto che un semplice bagliore.
Dove trova posto questo effetto
- Titoli hero su landing page gaming, cyberpunk, streaming o di brand musicali.
- Pagine di errore / 404, dove un glitch rafforza il tema 'qualcosa si è rotto'.
- Stati hover o focus su un titolo o un logo per un accento breve e accattivante.
- Stati di caricamento o 'elaborazione', dove un glitch comunica attività di sistema.
- Usalo con parsimonia sul testo del corpo — l'effetto è volutamente difficile da leggere a colpo d'occhio, quindi funziona meglio su titoli brevi o logotipi, non su paragrafi.
Abbinamento con altri strumenti CSS
Un titolo glitch è spesso solo un elemento in un layout più ampio, scuro e ad alto contrasto. Combinalo con un'ombra soffusa o angoli arrotondati dagli altri strumenti CSS qui sotto per un risultato più curato.
→ Generatore di ombreggiatura dei riquadri · Generatore di raggio di bordo
Domande frequenti
Perché rosso e ciano sono i colori predefiniti?
Rosso e ciano imitano il classico disallineamento dei canali RGB visto nel video analogico corrotto e nei primi errori di segnale digitale, da cui deriva originariamente il linguaggio visivo dell'effetto 'glitch'. Puoi sostituirli con qualsiasi coppia di colori, ma tonalità fortemente contrastanti si leggono più chiaramente come una separazione cromatica.
Questo effetto richiede JavaScript?
No — una volta che il CSS è sulla tua pagina, il glitch è un'animazione CSS pura guidata da @keyframes. JavaScript viene usato solo da questo strumento stesso, nel tuo browser, per aggiornare l'anteprima dal vivo e generare il codice copiabile.
Perché l'effetto non compare quando incollo il CSS nel mio progetto?
La causa più comune è un attributo data-text mancante o non corrispondente. Gli pseudo-elementi renderizzano ciò che si trova in data-text="..." sull'elemento, non il contenuto testuale proprio dell'elemento, quindi entrambi devono essere impostati e corrispondere esattamente, incluse maiuscole e minuscole.
Posso applicarlo a un titolo come h1 invece che a un div?
Sì — la tecnica funziona su qualsiasi elemento inline o di blocco che accetti pseudo-elementi ::before/::after e un attributo data-text. Basta applicare la stessa classe e lo stesso attributo data-text al tuo h1, span o altro elemento al posto di un div.
Un effetto glitch marcato danneggia l'accessibilità o la SEO?
Il contenuto testuale sottostante resta testo reale e selezionabile, quindi screen reader e motori di ricerca lo leggono normalmente indipendentemente dall'animazione visiva. Per gli utenti sensibili al movimento lampeggiante, considera di rispettare prefers-reduced-motion per disabilitare o rallentare l'animazione per loro.