1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4983],{3577:(e,t,a)=>{"use strict";a.d(t,{HB:()=>l,Ig:()=>x,J2:()=>y,KN:()=>h,Qi:()=>g,RW:()=>f,T5:()=>v,Vd:()=>p,Xg:()=>m,fI:()=>u,h6:()=>i,i8:()=>d,mr:()=>j,p0:()=>c,re:()=>w,sO:()=>o});var s=a(95155),r=a(12115),n=a(67023);let o=864e5;function i(e,t=!0){let a=(e||"").trim();if(!a)return null;if(t){let e=a.match(/(?:[?&]user_id=|\/i\/user\/)(\d{1,20})/i);if(e)return{type:"id",value:e[1]};if(/^\d{1,20}$/.test(a))return{type:"id",value:a}}return(a=a.replace(/^https?:\/\//i,"").replace(/^(www\.|mobile\.)?(x|twitter)\.com\//i,"").replace(/^@/,"").replace(/[/?#].*$/,""),t&&/^\d{1,20}$/.test(a))?{type:"id",value:a}:!!/^[A-Za-z0-9_]{1,15}$/.test(a)&&{type:"handle",value:a}}function l(e,t,a){let s=new Date(e);return Number.isNaN(s.getTime())?"":s.toLocaleDateString((0,n.C5)(t),{timeZone:"UTC",year:"numeric",month:a,day:"numeric"}).replace(/ /g,"\xa0")}function h(e,t,a,s=Date.now()){let r=Math.floor((s-new Date(e).getTime())/o);if(r<1)return t.agoToday;if(r<365)return(0,n.GS)(1===r?t.agoDay:t.agoDays,{n:(0,n.ZV)(r,a)});let i=Math.floor(r/365.25);return(0,n.GS)(1===i?t.agoYear:t.agoYears,{n:(0,n.ZV)(i,a)})}function c(e,t,a,s){let r=new Date(e),i=new Date(t),l=(i.getUTCFullYear()-r.getUTCFullYear())*12+i.getUTCMonth()-r.getUTCMonth();i.getUTCDate()<r.getUTCDate()&&l--;let h=e=>(0,n.ZV)(e,s);if(l>=1){let e=Math.floor(l/12),t=l%12,s=e?(0,n.GS)(1===e?a.durYear:a.durYears,{n:h(e)}):"",r=t?(0,n.GS)(1===t?a.durMonth:a.durMonths,{n:h(t)}):"";return s&&r?(0,n.GS)(a.durJoin,{a:s,b:r}):s||r}let c=Math.floor((t-r.getTime())/o);return c<1?a.durLessThanDay:(0,n.GS)(1===c?a.durDay:a.durDays,{n:h(c)})}function d({value:e,copy:t,copied:a}){let[n,o]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if(!n)return;let e=setTimeout(()=>o(!1),1400);return()=>clearTimeout(e)},[n]),(0,s.jsx)("button",{type:"button",className:`uh-copy${n?" done":""}`,onClick:()=>{try{navigator.clipboard?.writeText(e).catch(()=>{})}catch{}o(!0)},children:n?a:t})}function u({label:e,value:t}){return(0,s.jsxs)("div",{className:"loc-row",children:[(0,s.jsx)("span",{className:"lr-label",children:e}),(0,s.jsx)("span",{className:"lr-value",children:t})]})}let p=()=>(0,s.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,s.jsx)("path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"})]}),m=({className:e})=>(0,s.jsx)("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",children:(0,s.jsx)("path",{d:"M21 12a9 9 0 1 1-6.22-8.56",opacity:"0.9"})}),g=({label:e})=>(0,s.jsxs)("svg",{className:"vrf",viewBox:"0 0 24 24",fill:"none","aria-label":e,children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"currentColor"}),(0,s.jsx)("path",{d:"M8 12.3l2.6 2.6L16 9.3",fill:"none",stroke:"#fff",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})]}),f=({label:e})=>(0,s.jsxs)("svg",{className:"lk",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-label":e,children:[(0,s.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),(0,s.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),x=()=>(0,s.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,s.jsx)("path",{d:"M15 9l-6 6M9 9l6 6"})]}),v=()=>(0,s.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("path",{d:"M12 20h.01"}),(0,s.jsx)("path",{d:"M8.5 16.43a5 5 0 0 1 7 0"}),(0,s.jsx)("path",{d:"M5 12.86a10 10 0 0 1 5.17-2.69"}),(0,s.jsx)("path",{d:"M19 12.86a10 10 0 0 0-2.01-1.53"}),(0,s.jsx)("path",{d:"M2 8.82a15 15 0 0 1 4.18-2.65"}),(0,s.jsx)("path",{d:"M22 8.82a15 15 0 0 0-11.29-3.76"}),(0,s.jsx)("path",{d:"m2 2 20 20"})]}),y=()=>(0,s.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,s.jsx)("path",{d:"M15 3h6v6"}),(0,s.jsx)("path",{d:"M10 14 21 3"}),(0,s.jsx)("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})]}),j=()=>(0,s.jsx)("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M8 3v10M4 9l4 4 4-4"})}),w=({className:e})=>(0,s.jsx)("svg",{className:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M3 8h10M9 4l4 4-4 4"})})},14643:(e,t,a)=>{"use strict";a.d(t,{Cp:()=>o,D8:()=>l,Sy:()=>c,jN:()=>i,n$:()=>h});var s=a(95155);a(12115);var r=a(67023),n=a(84789);function o(e,t){let a=Math.max(1,Math.round(e/6e4)),s=Math.floor(a/1440),n=Math.floor(a%1440/60),o=a%60,i=(e,t,a)=>1===e?t:(0,r.GS)(a,{n:e});
1return s?[i(s,t.day,t.days),n?i(n,t.hour,t.hours):""].filter(Boolean).join(" "):n?[i(n,t.hour,t.hours),o?i(o,t.minute,t.minutes):""].filter(Boolean).join(" "):i(o,t.minute,t.minutes)}function i(e,t,a){if(e>=1)return(0,r.GS)(t.pacePerHour,{n:a(e,e>=10?0:1)});let s=24*e;return(0,r.GS)(t.pacePerDay,{n:a(s,s>=10?0:1)})}let l=(e,t)=>new Date(e).toISOString().slice(0,10)!==new Date(t).toISOString().slice(0,10),h=(e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",hour:"2-digit",minute:"2-digit",hour12:!1,...t?{month:"short",day:"numeric"}:{}});function c({times:e,from:t,to:a,intl:o,S:i,perBin:c,tip:d,aria:u}){let p=(0,n.vO)(e,t,a),m=Math.max(1,...p.counts),g=h(o,l(p.start,a)||p.size>=432e5),f=e=>g.format(new Date(p.start+e*p.size)),x=p.counts.length-1,v=[...new Set([0,Math.floor(x/2),x])];return(0,s.jsxs)("figure",{className:"hs-chart",children:[(0,s.jsx)("figcaption",{className:"hs-chart-cap",children:(0,r.GS)(c,{bin:i.bins[p.size/6e4]??""})}),(0,s.jsx)("div",{className:"hs-bars",role:"img","aria-label":u,children:p.counts.map((e,t)=>(0,s.jsx)("span",{className:"hs-bar",title:(0,r.GS)(d,{time:f(t),n:e}),children:(0,s.jsx)("i",{style:{height:`${e?Math.max(4,e/m*100):0}%`}})},t))}),(0,s.jsx)("div",{className:"hs-axis","aria-hidden":"true",children:v.map(e=>(0,s.jsx)("span",{style:{left:`${(e+.5)/p.counts.length*100}%`},children:f(e)},e))})]})}},49647:(e,t,a)=>{"use strict";a.d(t,{U:()=>s,Y:()=>r});let s={type:"search",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:!1,enterKeyHint:"go","aria-autocomplete":"none","data-form-type":"other","data-lpignore":"true","data-1p-ignore":"true","data-bwignore":"true"},r={...s,type:"url",inputMode:"url"}},74983:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>N});var s=a(95155),r=a(12115),n=a(49647),o=a(80159),i=a(10922),l=a(51038),h=a(28234);let c={en:{meta:{title:"Hashtag Tweet Counter: How Many Posts per Hour on X? | Sorsa API",description:"Count how fast any X (Twitter) hashtag is being used right now: posts per hour, an hourly chart and a side-by-side comparison of up to 3 tags. Free.",ogTitle:"Hashtag Tweet Counter"},heading:"Hashtag Tweet Counter",lede:"How fast is a hashtag moving on X (Twitter) right now? Enter any hashtag to see how many posts it gets per hour, with an hourly chart and a side-by-side comparison of up to three tags. Free, no login.",inputLabel:"Hashtag",placeholder:"e.g. #BTS or #WorldCup",compare:"+ Compare another hashtag",remove:"Remove",run:"Count",loading:"Countingâ¦",helper:"Free \xb7 No login \xb7 Measures the pace from the latest posts; X doesnât publish all-time totals. Each hashtag is one check.",pacePerHour:"â {n} posts per hour",pacePerDay:"â {n} posts per day",caption:"Based on the {n} latest posts, which cover the last {span}.",captionAll:"All {n} posts from the last 24 hours.",captionOne:"The only post from the last 24 hours.",span:a(91339).b,perBin:"Posts per {bin}, UTC",binTip:"{time} UTC: {n}",chartAria:"Posts over time for {tag}",refresh:"Refresh",refreshNote:"Counts as a new check. Refresh every few minutes, not every second.",faster:"{x}x faster than {tag}",slower:"{x}x slower than {tag}",same:"About the same pace as {tag}",combinedHeading:"Posts per hour over time, side by side (UTC)",combinedAria:"Posts over time for each hashtag",seeReport:"See who is posting and the top posts",emptyTitle:"No recent posts for {tag}.",emptyBody:"Check the spelling; X hashtags ignore case but not accents.",freeNote:"It does not count against your free counts today.",skipped:"Not counted: no free counts left today.",tagError:"We could not reach X for this hashtag. Try again in a minute.",errorTitle:"We could not reach X right now.",errorBody:"Try again in a minute.",invalidTitle:"That isnât a hashtag.",invalidBody:"Enter a hashtag such as #BTS: letters, numbers and underscores, no spaces.",ctaHeading:"Track a hashtag all day",ctaBody:"Collect every post for a hashtag through the Sorsa API, 20 per request, and chart its pace hour by hour. 100 free requests, no card.",ctaButton:"Start free",schemaAppName:"Hashtag Tweet Counter",schemaAppDescription:"Free X (Twitter) hashtag counter: how many posts per hour a hashtag gets right now, measured from its latest posts, with an hourly chart and a comparison of up to three tags. No login.",schemaHowToName:"How the hashtag counter works"}};var d=a(67023),u=a(91535),p=a(26696),m=a(84789),g=a(3577),f=a(14643);a(88857);let x={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},v=()=>(0,s.jsx)("svg",{...x,children:(0,s.jsx)("path",{d:"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"})}),y=()=>(0,s.jsxs)("svg",{...x,strokeWidth:"2",children:[(0,s.jsx)("path",{d:"M3 12a9 9 0 0 1 15-6.7L21 8"}),(0,s.jsx)("path",{d:"M21 3v5h-5"}),(0,s.jsx)("path",{d:"M21 12a9 9 0 0 1-15 6.7L3 16"}),(0,s.jsx)("path",{d:"M3 21v-5h5"})]}),j=["var(--blue)","var(--amber)","var(--green-strong)"];function w({c:e,first:t,compare:a,T:r,F:n,locale:i}){let h=(0,l.tu)("/hashtag-analytics")?(0,s.jsxs)("a",{className:"hc-link",href:`${(0,o.lS)("/hashtag-analytics",i)}?q=${encodeURIComponent(e.tag)}`,children:[r.seeReport,(0,s.jsx)(g.re,{className:"arrow"})]}):null;if("ok"!==e.status)return(0,s.jsxs)("div",{className:`hc-card ${e.status}`,children:[(0,s.jsx)("p",{className:"hc-tag",children:e.tag}),"empty"===e.status?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("p",{className:"hc-empty-t",children:(0,d.GS)(r.emptyTitle,{tag:e.tag})}),(0,s.jsx)("p",{className:"hc-cap",children:r.emptyBody}),(0,s.jsx)("p",{className:"er-note",children:r.freeNote})]}):(0,s.jsx)("p",{className:"hc-cap",children:"skipped"===e.status?r.skipped:r.tagError})]});let c=(0,m.vk)(e.times,e.complete,e.since,e.until),u=(0,m.lD)(c),p=e.complete?1===e.times.length?r.captionOne:(0,d.GS)(r.captionAll,{n:n.n(e.times.length)}):(0,d.GS)(r.caption,{n:n.n(e.times.length),span:(0,f.Cp)(c.to-c.from,r.span)}),x=null;if(a&&t&&t!==e&&"ok"===t.status){let e=(0,m.JS)(u,(0,m.lD)((0,m.vk)(t.times,t.complete,t.since,t.until)));x="same"===e.dir?(0,d.GS)(r.same,{tag:t.tag}):(0,d.GS)("faster"===e.dir?r.faster:r.slower,{x:n.dec(e.x,e.x>=10?0:1),tag:t.tag})}return(0,s.jsxs)("div",{className:"hc-card",children:[(0,s.jsx)("p",{className:"hc-tag",children:e.tag}),(0,s.jsx)("p",{className:"hc-big",children:(0,f.jN)(u,r,n.dec)}),(0,s.jsx)("p",{className:"hc-cap",children:p}),x&&(0,s.jsx)("p",{className:"hc-rel",children:x}),!a&&(0,s.jsx)(f.Sy,{times:e.times,from:c.from,to:c.to,intl:n.tag,S:r.span,perBin:r.perBin,tip:r.binTip,aria:(0,d.GS)(r.chartAria,{tag:e.tag})}),h]})}function k({counts:e,T:t,F:a}){let r=e.filter(e=>"ok"===e.status);if(r.length<2)return null;let n=r.map(e=>(0,m.vk)(e.times,e.complete,e.since,e.until)),o=Math.min(...n.map(e=>e.from)),i=Math.max(...n.map(e=>e.to)),{start:l,size:h,counts:c}=(0,m.vO)([],o,i),u=c.length,p=r.map((e,t)=>{let a=(0,m.rP)(e.times,n[t],l,h,u);return a.some(e=>null!=e)||(a[Math.min(u-1,Math.floor((n[t].to-1-l)/h))]=(0,m.lD)(n[t])),{tag:e.tag,rates:a}}),g=Math.max(1,...p.flatMap(e=>e.rates.filter(e=>null!=e))),x=e=>1===u?300:(e+.5)/u*600,v=e=>150-e/g*140-5,y=(0,f.n$)(a.tag,(0,f.D8)(l,i));return(0,s.jsxs)("div",{className:"hc-combined",children:[(0,s.jsx)("p",{className:"hs-chart-cap",children:(0,d.GS)(t.combinedHeading,{bin:t.span.bins[h/6e4]??""})}),(0,s.jsx)("svg",{viewBox:"0 0 600 150",preserveAspectRatio:"none",role:"img","aria-label":t.combinedAria,children:p.map((e,t)=>{let a=e.rates.flatMap((e,t)=>null==e?[]:[[x(t),v(e)]]);return(0,s.jsx)("g",{style:{color:j[t]},children:(0,s.jsx)("polyline",{points:a.map(([e,t])=>`${e.toFixed(1)},${t.toFixed(1)}`).join(" "),fill:"none",stroke:"currentColor",strokeWidth:"2.2",vectorEffect:"non-scaling-stroke",strokeLinejoin:"round"})},e.tag)})}),(0,s.jsx)("div",{className:"hc-dots","aria-hidden":"true",children:p.map((e,t)=>e.rates.map((e,a)=>null==e?null:(0,s.jsx)("i",{style:{left:`${x(a)/600*100}%`,top:`${v(e)/150*100}%`,background:j[t]}},`${t}-${a}`)))}),(0,s.jsxs)("div",{className:"hs-axis","aria-hidden":"true",children:[(0,s.jsx)("span",{style:{left:0},children:y.format(new Date(l))}),(0,s.jsx)("span",{style:{right:0},children:y.format(new Date(l+(u-1)*h))})]}),(0,s.jsx)("ul",{className:"hc-legend",children:p.map((e,t)=>(0,s.jsxs)("li",{children:[(0,s.jsx)("i",{style:{background:j[t]}}),e.tag]},e.tag))})]})}function N({locale:e=h.Xn}={}){let t=c[e]??c[h.Xn],a=(0,r.useMemo)(()=>{let t=(0,d.C5)(e);return{tag:t,n:t=>(0,d.ZV)(t,e),dec:(e,a)=>new Intl.NumberFormat(t,{maximumFractionDigits:a}).format(e)}},[e]),[l,f]=(0,r.useState)([""]),[x,j]=(0,r.useState)(!1),[b,T]=(0,r.useState)(null),[C,M]=(0,r.useState)(null),[L,S]=(0,r.useState)([]),B=(0,r.useRef)(null),$=(0,r.useRef)(null),A=(0,p.e)("hashtag-counter",{locale:e,runButtonRef:B});(0,r.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("tag"),t=e?(0,m.p3)(e,{hashtagOnly:!0}):null;t&&f([t.term])},[]);let D=async(e=l)=>{if(x)return;let t=e.map(e=>
1e.trim()).filter(Boolean);if(!t.length)return void $.current?.focus();let a=t.map(e=>(0,m.p3)(e,{hashtagOnly:!0}));if(a.some(e=>!e)){M(null),T({kind:"invalid"}),A.clearCard();return}let s=[...new Map(a.map(e=>[e.term.toLowerCase(),e.term])).values()].slice(0,m.Or),r={token:s.join(",").toLowerCase(),term:s.join(", "),query:(0,m.Ex)(s[0],(0,m.Nf)(Date.now(),m.vp["24h"],3e5))};if(A.gate(r)){j(!0),T(null),M(null);try{let e=await fetch((0,o.hd)("/api/hashtag-counter"),{method:"POST",headers:{"Content-Type":"application/json","x-sorsa-client":"sorsa-web-client-v1","x-sorsa-nonce":await (0,i._)()},body:JSON.stringify({tags:s})}),t=await e.json().catch(()=>null);if(!e.ok){if(A.isExhaustedResponse(e.status,t))return void A.exhausted(r,t);throw t}M(t),S(s),t.counts.some(e=>"ok"===e.status)?A.consumed(r,e):A.clearCard()}catch{T({kind:"error"}),A.clearCard()}finally{j(!1)}}},H=(C?.counts.length??0)>1,P=C?.counts[0]??null;return(0,s.jsxs)("div",{className:"wrap hc-page",children:[(0,s.jsxs)("section",{className:"hero",children:[(0,s.jsx)("h1",{children:t.heading}),(0,s.jsx)("p",{className:"hero-sub",children:t.lede})]}),(0,s.jsxs)("section",{id:"tool",children:[(0,s.jsxs)("div",{className:"check-card",children:[(0,s.jsx)("label",{className:"field-label",htmlFor:"hc-tag-0",children:t.inputLabel}),(0,s.jsx)("div",{className:"hc-inputs",children:l.map((e,a)=>(0,s.jsxs)("div",{className:"hc-row",children:[(0,s.jsxs)("div",{className:"field",children:[(0,s.jsx)("span",{className:"at",children:(0,s.jsx)(v,{})}),(0,s.jsx)("input",{...n.U,ref:0===a?$:void 0,id:`hc-tag-${a}`,type:"search",name:`sorsa-hashtag-${a}`,placeholder:t.placeholder,enterKeyHint:"go",value:e,onChange:e=>f(t=>t.map((t,s)=>s===a?e.target.value:t)),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),D())},"data-dashlane-ignore":"true"})]}),0===a&&l.length>1&&(0,s.jsx)("span",{className:"hc-remove-sp","aria-hidden":"true"}),a>0&&(0,s.jsx)("button",{type:"button",className:"hc-remove","aria-label":`${t.remove} ${e}`,onClick:()=>f(e=>e.filter((e,t)=>t!==a)),children:(0,s.jsx)(g.Ig,{})})]},a))}),l.length<m.Or&&(0,s.jsx)("button",{type:"button",className:"hc-add",onClick:()=>f(e=>[...e,""]),children:t.compare}),(0,s.jsxs)("div",{className:"run-row",children:[(0,s.jsxs)("button",{ref:B,className:`btn btn-primary run-btn${x?" loading":""}`,type:"button",id:"runBtn",onClick:()=>D(),"aria-busy":x,children:[(0,s.jsx)(g.Xg,{className:"spinner"}),(0,s.jsx)("span",{className:"run-label",children:x?t.loading:t.run})]}),A.ui.counter]}),(0,s.jsx)("p",{className:"helper",children:t.helper})]}),A.ui.gate,A.ui.nudge,(0,s.jsxs)("div",{id:"results","aria-live":"polite",children:[x&&(0,s.jsx)("div",{className:"results",children:(0,s.jsxs)("div",{className:"res-loading",role:"status",children:[(0,s.jsx)("span",{className:"spinner",children:(0,s.jsx)(g.Xg,{})}),(0,s.jsx)("span",{children:t.loading})]})}),b?.kind==="error"&&(0,s.jsxs)("div",{className:"res-error muted",role:"status",children:[(0,s.jsx)("div",{className:"er-ico",children:(0,s.jsx)(g.T5,{})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"er-title",children:t.errorTitle}),(0,s.jsx)("div",{className:"er-body",children:t.errorBody}),(0,s.jsx)("p",{className:"er-note",children:t.freeNote})]})]}),b?.kind==="invalid"&&(0,s.jsxs)("div",{className:"res-error",role:"status",children:[(0,s.jsx)("div",{className:"er-ico",children:(0,s.jsx)(g.Ig,{})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"er-title",children:t.invalidTitle}),(0,s.jsx)("div",{className:"er-body",children:t.invalidBody})]})]}),C&&(0,s.jsxs)("div",{className:"results hc",children:[(0,s.jsx)("div",{className:`hc-cards n${C.counts.length}`,children:C.counts.map(r=>(0,s.jsx)(w,{c:r,first:P,compare:H,T:t,F:a,locale:e},r.tag))}),(0,s.jsx)(k,{counts:C.counts,T:t,F:a}),(0,s.jsxs)("div",{className:"hc-refresh",children:[(0,s.jsxs)("button",{type:"button",className:"btn btn-ghost",onClick:()=>D(L),disabled:x,children:[(0,s.jsx)(y,{}),t.refresh]}),(0,s.jsx)("span",{children:t.refreshNote})]})]})]}),A.ui.apiCard,(0,s.jsxs)("div",{className:"tool-cta",children:[(0,s.jsxs)("div",{className:"tool-cta-text",children:[(0,s.jsx)("strong",{children:t.ctaHeading}),(0,s.jsx)("span",{children:t.ctaBody})]}),(0,s.jsx)("div",{className:"tool-cta-actions",children:(0,s.jsxs)("a",{className:"btn btn-primary",href:u.b,children:[t.ctaButton,(0,s.jsx)(g.re,{className:"arrow"})]})})]})]}),A.ui.slideIn]})}},84789:(e,t,a)=>{"use strict";a.d(t,{AD:()=>j,Ex:()=>d,JS:()=>L,KD:()=>n,Nf:()=>u,O9:()=>k,Or:()=>s,P$:()=>C,at:()=>y,eo:()=>T,lD:()=>m,mB:()=>w,p3:()=>c,rP:()=>x,sp:()=>M,t3:()=>v,vO:()=>f,vk:()=>p,vp:()=>r,wl:()=>N});let s=3,r={"24h":864e5,"7d":6048e5},n=["en","es","pt","ja","ko","th","tr","ar","fr","de","it","hi","id","zh"],o=/^(?:https?:\/\/)?(?:www\.|mobile\.)?(?:x|twitter)\.com\/hashtag\/([\p{L}\p{N}_]+)/iu,i=/^[\p{L}\p{N}_]{1,100}$/u,l=/^[A-Za-z][A-Za-z0-9_.]{0,11}$/,h=/^\w{1,15}$/;function c(e,{hashtagOnly:t=!1}={}){let a=String(e??"").trim().replace(/\s+/g," ");
1if(!a)return null;let s=o.exec(a);if(s&&(a=`#${s[1]}`),t||a.startsWith("#")){let e=a.replace(/^#+/,"");return!!i.test(e)&&{kind:"hashtag",term:`#${e}`}}if(a.startsWith("$")){let e=a.slice(1);return!!l.test(e)&&{kind:"cashtag",term:`$${e.toUpperCase()}`}}if(a.startsWith("@")){let e=a.slice(1);return!!h.test(e)&&{kind:"mention",term:`@${e}`}}let r=/^["ââ](.+)["ââ]$/.exec(a);if(r){let e=r[1].replace(/["ââ]/g,"").trim();return!!e&&e.length<=80&&{kind:"phrase",term:`"${e}"`}}let n=a.split(" ").filter(e=>!/^-?\w+:/.test(e)&&!/^[()]+$/.test(e)).join(" ").replace(/["ââ]/g,"");return!!n&&!(n.length>80)&&{kind:"keyword",term:n}}function d(e,t,a){let s=(BigInt(Math.max(0,Math.floor(t)-0x12c148d03c1))<<BigInt(22)).toString();return`${e} since_id:${s}${a?` lang:${a}`:""}`}function u(e,t,a){return Math.floor(e/a)*a-t}function p(e,t,a,s){let r=e.length?Math.min(...e):s;return{complete:t,from:t?a:Math.min(r,s),to:s,n:e.length}}function m(e){return e.n?e.n/Math.max((e.to-e.from)/36e5,1/60):0}let g=[5,10,15,30,60,180,360,720,1440].map(e=>6e4*e);function f(e,t,a,s=24){let r=g.find(e=>Math.ceil((Math.max(a,t+1)-Math.floor(t/e)*e)/e)<=s)??g[g.length-1],n=Math.floor(t/r)*r,o=Array(Math.max(1,Math.ceil((a-n)/r))).fill(0);for(let t of e){let e=Math.floor((t-n)/r);e>=0&&e<o.length&&o[e]++}return{start:n,size:r,counts:o}}function x(e,t,a,s,r){let n=Array(r).fill(0);for(let t of e){let e=Math.floor((t-a)/s);e>=0&&e<r&&n[e]++}return n.map((e,r)=>{let n=Math.max(a+r*s,t.from),o=Math.min(a+(r+1)*s,t.to)-n;return o<s/10?null:e/(o/36e5)})}function v(e,t=10){let a=new Map;for(let t of e){let e=t.author_username.toLowerCase();if(!e)continue;let s=a.get(e);s?s.posts++:a.set(e,{username:t.author_username,name:t.author_name,followers:t.author_followers,verified:t.verified,avatar:t.avatar,posts:1})}return[...a.values()].sort((e,t)=>t.followers-e.followers||t.posts-e.posts).slice(0,t)}let y=e=>new Set(e.map(e=>e.author_username.toLowerCase()).filter(Boolean)).size,j=e=>e.length?e.filter(e=>e.verified).length/e.length:0,w=e=>e.length?e.filter(e=>e.media_types.length>0).length/e.length:0,k=["post","reply","quote","repost"];function N(e){let t={post:0,reply:0,quote:0,repost:0};for(let a of e)t[a.type]++;return t}let b=new Set(["und","zxx","qam","qct","qht","qme","qst","art"]);function T(e,t=6){let a=new Map,s=0;for(let t of e){let e=t.lang.toLowerCase();!(!e||b.has(e))&&(a.set(e,(a.get(e)??0)+1),s++)}return[...a.entries()].sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).slice(0,t).map(([e,t])=>({code:e,share:t/s}))}function C(e,t,a=15){let s=t.startsWith("#")?t.slice(1).toLowerCase():"",r=new Map;for(let t of e){let e=new Set;for(let a of t.hashtags){let t=a.toLowerCase();if(t===s||e.has(t))continue;e.add(t);let n=r.get(t);n?n.n++:r.set(t,{tag:a,n:1})}}return[...r.values()].sort((e,t)=>t.n-e.n||e.tag.localeCompare(t.tag)).slice(0,a)}function M(e){return e.reduce((e,t)=>({views:e.views+(t.views??0),likes:e.likes+t.likes}),{views:0,likes:0})}function L(e,t){if(!e||!t)return{dir:"same",x:1};let a=e/t;return a>=.9&&a<=1.1?{dir:"same",x:1}:a>1?{dir:"faster",x:a}:{dir:"slower",x:1/a}}},88857:()=>{},91339:(e,t,a)=>{"use strict";a.d(t,{D:()=>o,b:()=>r});var s=a(28234);let r={days:"{n} days",day:"1 day",hours:"{n} hours",hour:"1 hour",minutes:"{n} minutes",minute:"1 minute",bins:{5:"5 minutes",10:"10 minutes",15:"15 minutes",30:"30 minutes",60:"hour",180:"3 hours",360:"6 hours",720:"12 hours",1440:"day"}},n={en:{meta:{title:"Twitter Hashtag Analytics: Free X Hashtag Tracker, No Login | Sorsa API",description:"Analyze any X (Twitter) hashtag, cashtag, mention or keyword: posts over time, top voices, top posts, languages and related hashtags. Free, instant, no login.",ogTitle:"Twitter Hashtag Analytics and Tracker"},heading:"Twitter Hashtag Analytics",lede:"Enter a #hashtag, $cashtag, @mention or any keyword to see how the conversation on X (Twitter) is going right now. You get posts over time, the accounts driving it, the top posts by views and likes, languages, related hashtags and how much of it is original content. Itâs instant, and thereâs no login or email.",inputLabel:"Hashtag, cashtag, mention or keyword",placeholder:'e.g. #AI, $BTC, @nasa or "climate week"',periodLabel:"Period",periods:{"24h":"Last 24 hours","7d":"Last 7 days"},periodPhrase:{"24h":"24 hours","7d":"7 days"},langLabel:"Language",langAny:"Any language",run:"Analyze",loading:"Reading the latest postsâ¦",helper:"Free \xb7 No login \xb7 Based on a sample of the latest 80 posts plus the top posts.",sample:"Sample: the {n} latest posts for {term}, covering the last {span} ({from} to {to} UTC), plus {top}
1 top posts.",sampleComplete:"Complete for the last {period}: {n} posts.",sampleCompleteOne:"Complete for the last {period}: 1 post.",busy:"This conversation moves fast: {n} posts cover only the last {span}. For hours or days of data, use the API.",span:r,activityHeading:"Activity",perBin:"Posts per {bin}, UTC",chartAria:"Posts over time for {term}, from {from} to {to} UTC",binTip:"{time} UTC: {n}",paceLabel:"Pace",pacePerHour:"â {n} posts per hour",pacePerDay:"â {n} posts per day",paceLink:"Live pace in the Hashtag Counter",whoHeading:"Who is talking",authors:"{n} accounts",authorsOne:"1 account",authorsLabel:"Unique authors",verifiedLabel:"Verified",verifiedLine:"{pct} of posts from verified accounts",voicesHeading:"Top voices",followersN:"{n} followers",postsN:"{n} posts",postsOne:"1 post",verified:"Verified",whatHeading:"What they post",mix:{post:"Original posts",reply:"Replies",quote:"Quotes",repost:"Reposts"},mixAria:"Post types in the sample",mediaLabel:"With media",langsLabel:"Languages",relatedLabel:"Related hashtags",relatedNote:"Each one opens its own report, which is one of your free reports.",relatedNone:"No other hashtags in this sample.",none:"None detected",topHeading:"Top posts",topBy:{views:"By views",likes:"By likes"},topAria:"Order top posts",viewsN:"{n} views",likesN:"{n} likes",repostsN:"{n} reposts",repliesN:"{n} replies",open:"Open",topNone:"X returned no top posts for this window.",totals:"Posts in this sample drew {views} views and {likes} likes.",exportHeading:"Export",exportNote:"The {n} posts of the sample, with the same columns as Export Tweets.",download:"Download CSV",emptyTitle:"No recent posts found for {query}.",emptyBody:"Try the last 7 days, remove the language filter, or check the spelling.",freeNote:"It does not count against your free reports today.",errorTitle:"We could not reach X for this search.",errorBody:"Try again in a minute.",invalidTitle:"That canât be searched.",invalidBody:'Enter a #hashtag, a $cashtag, an @mention, a keyword or an "exact phrase".',footLink:"Tracking a campaign or brand every day? Automate it with the API",viralLink:"Most viral posts for {term}",ctaHeading:"Track it continuously",ctaBody:"Collect every post for a hashtag or keyword through the Sorsa API, 20 per request, and build your own dashboard or alerts. 100 free requests, no card.",ctaButton:"Start free",schemaAppName:"Twitter Hashtag Analytics",schemaAppDescription:"Free X (Twitter) hashtag analytics and tracker: a report on the latest posts for any hashtag, cashtag, mention or keyword, with activity over time, pace, top voices, languages, related hashtags and top posts. No login.",schemaHowToName:"How to track a hashtag on X"}};function o(e){return n[e]??n[s.Xn]}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.