snitcher.com

Avaliação do site snitcher.com

Snitcher — Uncover your hidden website visitors | Snitcher

 Gerado a 22 de Março de 2026 16:53 PM

Estatísticas desatualizadas? ATUALIZE !

O resultado é de 54/100

Conteúdo SEO

Título

Snitcher — Uncover your hidden website visitors | Snitcher

Cumprimento : 58

Perfeito, o Título contém entre 10 e 70 caracteres.

Descrição

Snitcher turns anonymous website visitors into actionable leads. Identify in-market companies, see buyer intent, and trigger workflows across your stack.

Cumprimento : 153

Perfeito, a Descrição META contém entre 70 e 160 caracteres.

Palavras-chave

Mau. Não detetámos palavras-chave META na sua página.

Propriedades Og Meta

Boa! Esta página tira vantagens das propriedades Og.

Propriedade Conteúdo
title Snitcher — Uncover your hidden website visitors
description Snitcher turns anonymous website visitors into actionable leads. Identify in-market companies, see buyer intent, and trigger workflows across your stack.
type website
url https://snitcher.com/
site_name Snitcher
locale en_US
image https://snitcher.com/og-image.png
image:width 1200
image:height 630
image:alt Snitcher — Uncover your hidden website visitors

Cabeçalhos

H1 H2 H3 H4 H5 H6
1 6 1 8 6 0
  • [H1] Uncover your hiddenhidden(function(){const componentId = "pixel-reveal-7en0z8pek"; const decodeCharsStr = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9"; const cycles = 11; (function() { const container = document.getElementById(componentId); if (!container) return; if (container.hasAttribute('data-initialized')) return; container.setAttribute('data-initialized', 'true'); const decorativeElement = container.querySelector('.pixel-reveal-decorative'); if (!decorativeElement) return; const isAutoplay = container.getAttribute('data-autoplay') !== 'false'; const decodeChars = decodeCharsStr.split(','); // Brand color for pixel effects const BRAND_COLOR = '#4C4CFF'; // Animation configuration const SCRAMBLE_INTERVAL = 45; const SCRAMBLE_DURATION = cycles * SCRAMBLE_INTERVAL; const STAGGER_DELAY = 50; const REVEAL_STAGGER = 70; const SPARKLE_CHANCE = 0.3; // Pixel dot configuration const DOTS_PER_CHAR = 6; const DOT_SIZE = 3; // Track active timeouts/intervals for cleanup on hover mode let activeTimers = []; let activeIntervals = []; // Seeded random for consistent results function seededRandom(seed) { const x = Math.sin(seed * 12.9898 + seed * 78.233) * 43758.5453; return x - Math.floor(x); } // Create pixel dots for a character function createPixelDots(dotsContainer, charIndex) { dotsContainer.innerHTML = ''; for (let i = 0; i < DOTS_PER_CHAR; i++) { const dot = document.createElement('span'); dot.className = 'pixel-dot'; // Random position within character bounds const seed = charIndex * 100 + i; const x = seededRandom(seed) * 100; const y = seededRandom(seed + 1000) * 100; // Random animation phase for pulsing const phase = seededRandom(seed + 2000) * Math.PI * 2; const speed = 0.5 + seededRandom(seed + 3000) * 0.5; dot.style.cssText = ` left: ${x}%; top: ${y}%; width: ${DOT_SIZE}px; height: ${DOT_SIZE}px; --phase: ${phase}; --speed: ${speed}; `; dot.dataset.phase = String(phase); dot.dataset.speed = String(speed); dotsContainer.appendChild(dot); } } // Animate pixel dots with pulsing opacity (like hero dot grid) let dotsAnimationId = null; const allDots = []; function animateDots(time) { for (const { dot, phase, speed } of allDots) { // Dual sine wave for complex pulsing (matching hero dot grid) const wave1 = Math.sin(time * 0.003 * speed + phase); const wave2 = Math.sin(time * 0.003 * 0.7 + phase * 1.3); const combinedWave = wave1 * 0.7 + wave2 * 0.3; // Normalize and sharpen const normalizedWave = (combinedWave + 1) / 2; const sharpenedWave = Math.pow(normalizedWave, 1.5); // Occasional sparkle const sparkleChance = Math.sin(time * 0.001 + parseFloat(dot.dataset.phase || '0')) * 0.5 + 0.5; const sparkle = sparkleChance > 0.95 ? 1.5 : 1; const opacity = Math.min((0.2 + sharpenedWave * 0.8) * sparkle, 1); dot.style.opacity = String(opacity); } dotsAnimationId = requestAnimationFrame(animateDots); } function startDotsAnimation() { if (!dotsAnimationId) { dotsAnimationId = requestAnimationFrame(animateDots); } } function stopDotsAnimation() { if (dotsAnimationId) { cancelAnimationFrame(dotsAnimationId); dotsAnimationId = null; } } function clearAllTimers() { activeTimers.forEach(t => clearTimeout(t)); activeIntervals.forEach(i => clearInterval(i)); activeTimers = []; activeIntervals = []; } function resetAnimation() { clearAllTimers(); stopDotsAnimation(); allDots.length = 0; // Reset state attributes container.removeAttribute('data-animated'); container.removeAttribute('data-complete'); // Reset all decorative chars to their original state const chars = decorativeElement.querySelectorAll('.pixel-char'); chars.forEach((charEl) => { charEl.classList.remove('scrambling', 'revealed', 'sparkle'); const currentDisplay = charEl.querySelector('.pixel-char-current'); const finalChar = charEl.getAttribute('data-char') || ''; if (currentDisplay) currentDisplay.textContent = finalChar; const dotsContainer = charEl.querySelector('.pixel-dots'); if (dotsContainer) dotsContainer.innerHTML = ''; }); } function startPixelAnimation() { // If already animating in hover mode, reset first if (!isAutoplay) { resetAnimation(); } const chars = decorativeElement.querySelectorAll('.pixel-char'); const totalChars = chars.length; // Set brand color CSS variable container.style.setProperty('--brand-color', BRAND_COLOR); // Read computed text color for final state const rootColor = getComputedStyle(container).color; container.style.setProperty('--pixel-color', rootColor); // Mark as animated container.setAttribute('data-animated', 'true'); // Initialize pixel dots for each character chars.forEach((charEl, index) => { const dotsContainer = charEl.querySelector('.pixel-dots'); if (dotsContainer) { createPixelDots(dotsContainer, index); // Register dots for animation const dots = dotsContainer.querySelectorAll('.pixel-dot'); dots.forEach(dot => { allDots.push({ dot, phase: parseFloat(dot.dataset.phase || '0'), speed: parseFloat(dot.dataset.speed || '1') }); }); } }); // Start dots pulsing animation startDotsAnimation(); // Process each character chars.forEach((charEl, index) => { const currentDisplay = charEl.querySelector('.pixel-char-current'); const finalChar = charEl.getAttribute('data-char') || ''; const startDelay = index * STAGGER_DELAY; const revealTime = startDelay + SCRAMBLE_DURATION + (index * REVEAL_STAGGER); // Start scrambling after stagger delay const t = setTimeout(() => { charEl.classList.add('scrambling'); // Scramble at intervals with occasional sparkle let scrambleCount = 0; const scrambleInterval = setInterval(() => { const randomChar = decodeChars[Math.floor(Math.random() * decodeChars.length)]; currentDisplay.textContent = randomChar; // Random sparkle during scramble if (Math.random() < SPARKLE_CHANCE) { charEl.classList.add('sparkle'); const st = setTimeout(() => charEl.classList.remove('sparkle'), 150); activeTimers.push(st); } scrambleCount++; }, SCRAMBLE_INTERVAL); activeIntervals.push(scrambleInterval); // Stop scrambling and reveal final character const rt = setTimeout(() => { clearInterval(scrambleInterval); charEl.classList.remove('scrambling'); charEl.classList.add('revealed'); currentDisplay.textContent = finalChar; }, revealTime - startDelay); activeTimers.push(rt); }, startDelay); activeTimers.push(t); }); // Calculate total animation duration const lastCharIndex = totalChars - 1; const totalDuration = (lastCharIndex * STAGGER_DELAY) + SCRAMBLE_DURATION + (lastCharIndex * REVEAL_STAGGER) + 400; // Mark complete and cleanup const completeTimer = setTimeout(() => { container.setAttribute('data-complete', 'true'); stopDotsAnimation(); }, totalDuration); activeTimers.push(completeTimer); } if (isAutoplay) { // Autoplay mode: trigger on scroll into view (original behavior) if (container.hasAttribute('data-animated')) return; const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { startPixelAnimation(); observer.disconnect(); } }); }, { threshold: 0.1, rootMargin: '0px' } ); observer.observe(container); } else { // Hover mode: trigger on mouseenter, reset on mouseleave container.addEventListener('mouseenter', () => { startPixelAnimation(); }); container.addEventListener('mouseleave', () => { resetAnimation(); }); } })(); })(); website visitors
  • [H2] The system that powers every revenue moment
  • [H2] Own every stage from anonymous visit to closed deal
  • [H2] Trusted by GTM teams everywhere
  • [H2] Grow your business with Snitcher
  • [H2] Install in minutes, not months
  • [H2] Own every revenue moment
  • [H3] Seamlessly integrate with your entire stack
  • [H4] Find the revenue hiding in your traffic
  • [H4] Know who's ready before anyone else
  • [H4] Stay fast while everyone else slows down
  • [H4] Catch buyers while they're still deciding
  • [H4] See what's working before it's too late
  • [H4] Give clients an edge
  • [H4] Onboard clients in seconds
  • [H4] Work with GTM experts
  • [H5] Product
  • [H5] Journey
  • [H5] Teams
  • [H5] Use Cases
  • [H5] Resources
  • [H5] Company

Imagens

Encontrámos 80 imagens nesta página.

19 atributos ALT estão vazios ou em falta. É recomendado adicionar texto alternativo de modo a que os motores de busca identifiquem melhor o conteúdo das suas imagens.

Rácio Texto/HTML

Rácio : 2%

O rácio de texto para código HTML desta página é menor que 15 porcento, o que significa que provavelmente é necessário de adicionar mais conteúdos em forma de texto.

Flash

Perfeito, não foi encontrado conteúdo Flash nesta página.

Iframe

Oh, não, esta página tem Iframes na página, o que significa que o conteúdo destas não pode ser indexado.

Reescrita de URL

Perfeito. As ligações aparentam ser limpas!

Underscores (traços inferiores) nas URLs

Perfeito. Não foram encontrados 'underscores' (traços inferiores) nas suas URLs.

Ligações para a própria página

Encontrámos um total de 36 ligações incluindo 0 ligações a ficheiros

Âncoras Tipo Sumo
Account scoring Internas Passa sumo
Contact reveal Internas Passa sumo
GA4 enrichment Internas Passa sumo
Lead generation Internas Passa sumo
Marketing attribution Internas Passa sumo
Visitor identification Internas Passa sumo
About us Internas Passa sumo
Careers Internas Passa sumo
Talk to sales Internas Passa sumo
Customers Internas Passa sumo
Pricing Internas Passa sumo
Log in Internas Passa sumo
Start for free Internas Passa sumo
Platform Internas Passa sumo
Radar Internas Passa sumo
IP to Company Internas Passa sumo
Identify Internas Passa sumo
Signal Internas Passa sumo
Automate Internas Passa sumo
Engage Internas Passa sumo
Measure Internas Passa sumo
Sales Internas Passa sumo
Marketing Internas Passa sumo
RevOps Internas Passa sumo
Agency Internas Passa sumo
Explore program Internas Passa sumo
Explore integrations Internas Passa sumo
Blog Internas Passa sumo
Documentation Internas Passa sumo
Help center Internas Passa sumo
Changelog Internas Passa sumo
Contact Internas Passa sumo
Trust centre Internas Passa sumo
Privacy Policy Internas Passa sumo
Terms & Conditions Internas Passa sumo
Cookie Policy Internas Passa sumo

Palavras-chave SEO

Núvem de palavras-chave

pricing employees every marketing platform integrations teams snitcher into sales

Consistência das Palavras-chave

Palavra-chave Conteúdo Título Palavras-chave Descrição Cabeçalhos
snitcher 12
into 6
sales 6
employees 6
pricing 6

Usabilidade

Url

Domínio : snitcher.com

Cumprimento : 12

Favicon

Ótimo, o site tem um favicon.

Facilidade de Impressão

Não encontrámos CSS apropriado para impressão.

Língua

Otimo! A língua declarada deste site é en.

Dublin Core

Esta página não tira vantagens do Dublin Core.

Documento

Tipo de Documento

HTML 5

Codificação

Perfeito. O conjunto de caracteres UTF-8 está declarado.

Validação W3C

Erros : 0

Avisos : 0

Privacidade do Email

Aviso! No mínimo, foi encontrado um endereço de email sob a forma de texto. Isto é um convite para que spammers entupam a caixa de correio deste endereço.

HTML obsoleto

Fantástico! Não detetámos etiquetas HTML obsoletas.

Dicas de Velocidade

Excelente, este site não usa tablelas dentro de tabelas.
Oh não, o site usa estilos CSS nas etiquetas HTML.
Oh, não! O site utiliza demasiados ficheiros CSS (mais que 4).
Perfeito, o site usa poucos ficheiros JavaScript.
Perfeito, o site tira vantagens da compressão gzip.

Dispositivos Móveis

Otimização para dispositivos móveis

Icon Apple
Meta Viewport Tag
Conteúdo Flash

Otimização

XML Sitemap

Perfeito, o site tem um mapa XML do site (sitemap).

https://snitcher.com/sitemap-index.xml

Robots.txt

https://snitcher.com/robots.txt

Perfeito, o seu site tem um ficheiro robots.txt.

Analytics

Em falta

Não detetámos nenhuma ferramenta analítica de análise de atividade.

Este tipo de ferramentas (como por exemplo o Google Analytics) permite perceber o comportamento dos visitantes e o tipo de atividade que fazem. No mínimo, uma ferramenta deve estar instalada, sendo que em algumas situações mais do que uma pode ser útil.

PageSpeed Insights


Dispositivo
Categorias

Free SEO Testing Tool

Free SEO Testing Tool é uma ferramenta gratuita que o ajuda a avaliar o seu site