1"use strict";(self.webpackChunksavedelete_react=self.webpackChunksavedelete_react||[]).push([[22],{90022:(e,s,a)=>{a.r(s),a.d(s,{default:()=>k});var t=a(65043),r=a(49367),l=a(27033),n=a(77819),i=a(82054),c=a(22626),o=a(75088),d=a(72313),m=a(7104),g=a(41680),x=a(55731),h=a(61161),p=a(94805),u=a(44919),y=a(50797),j=a(20073),b=a(70579);const f=2e4,N=[{code:"en-US",label:"English (US)"},{code:"en-GB",label:"English (UK / India)"},{code:"en-AU",label:"English (Australia)"},{code:"en-CA",label:"English (Canada)"},{code:"auto",label:"Detect automatically"},{code:"de-DE",label:"German"},{code:"fr",label:"French"},{code:"es",label:"Spanish"},{code:"pt-BR",label:"Portuguese (Brazil)"},{code:"pt-PT",label:"Portuguese (Portugal)"},{code:"it",label:"Italian"},{code:"nl",label:"Dutch"},{code:"pl-PL",label:"Polish"},{code:"ru-RU",label:"Russian"},{code:"uk-UA",label:"Ukrainian"},{code:"ca-ES",label:"Catalan"},{code:"sv",label:"Swedish"},{code:"ta-IN",label:"Tamil"}],v=()=>{try{const e=localStorage.getItem("grammarLanguage");if(e&&N.some(s=>s.code===e))return e}catch(t){}const e="undefined"!==typeof navigator&&navigator.language||"en-US";if(/^en(-US)?$/i.test(e))return"en-US";if(/^en-AU/i.test(e))return"en-AU";if(/^en-CA/i.test(e))return"en-CA";if(/^en/i.test(e))return"en-GB";const s=e.split("-")[0].toLowerCase(),a=N.find(e=>e.code.split("-")[0]===s);return a?a.code:"en-US"},w=[{q:"Is this grammar checker really free?",a:"Yes. There is no account, no subscription and no daily limit. Each check can be up to 20,000 characters."},{q:"What does it check?",a:"Spelling, grammar, punctuation and style, using the open-source LanguageTool engine. Each issue comes with an explanation and a suggested correction, and you also get a readability score."},{q:"Which languages does it support?",a:"English with US, UK, Australian or Canadian spelling, plus German, French, Spanish, Portuguese, Italian, Dutch, Polish, Russian, Ukrainian, Catalan, Swedish and Tamil. You can also let it detect the language automatically."},{q:"How accurate is it?",a:'It catches most everyday spelling, grammar and punctuation errors. It does not include the AI-based rules LanguageTool keeps for its paid cloud service, so it can miss some commonly confused words, such as "too" and "to". Review each suggestion in context before accepting it.'},{q:"Can I use it for academic or business writing?",a:"Yes. Formal mode adds LanguageTool's stricter style rules for essays, reports and business documents. It does not check citations or detect plagiarism."},{q:"Is my text private?",a:"Your text is sent only to the LanguageTool server we run ourselves. It is not passed to any third party and it is not stored. Your browser keeps a short history of your recent checks on your own device."}],k=()=>{const[e,s]=(0,t.useState)(""),[a,k]=(0,t.useState)("standard"),[S,C]=(0,t.useState)(v),[A,L]=(0,t.useState)(!1),[T,F]=(0,t.useState)(null),[U,I]=(0,t.useState)(null),[E,G]=(0,t.useState)(!1),[D,O]=(0,t.useState)([]);(0,t.useEffect)(()=>{const e=localStorage.getItem("grammarHistory");if(e)try{O(JSON.parse(e))}catch(s){console.error("Error loading history:",s)}},[]),(0,t.useEffect)(()=>{try{localStorage.setItem("grammarLanguage",S)}catch(e){}},[S]);const P=e=>{switch(e){case"critical":return"text-red-600 bg-red-50 border-red-200";case"moderate":return"text-yellow-600 bg-yellow-50 border-yellow-200";case"suggestion":return"text-blue-600 bg-blue-50 border-blue-200";default:return"text-gray-600 bg-gray-50 border-gray-200"}},R=e=>{switch(e){case"grammar":return(0,b.jsx)(c.A,{className:"w-4 h-4"});case"spelling":return(0,b.jsx)(n.A,{className:"w-4 h-4"});case"punctuation":return(0,b.jsx)(g.A,{className:"w-4 h-4"});case"style":return(0,b.jsx)(h.A,{className:"w-4 h-4"});case"clarity":return(0,b.jsx)(u.A,{className:"w-4 h-4"});default:return(0,b.jsx)(i.A,{className:"w-4 h-4"})}},W=e=>e>=90?"text-green-600":e>=75?"text-yellow-600":e>=50?"text-orange-600":"text-red-600";return(0,b.jsxs)("div",{className:"min-h-screen bg-gray-50 py-8",children:[(0,b.jsxs)(r.mg,{children:[(0,b.jsx)("title",{children:"Free Grammar Checker \u2013 Spelling, Grammar & Style | SaveDelete"}),(0,b.jsx)("meta",{name:"description",content:"Free grammar, spelling and punctuation checker powered by the open-source LanguageTool engine. Up to 20,000 characters, 13 languages, no signup, text not stored."}),(0,b.jsx)("link",{rel:"canonical",href:"https://savedelete.com/free-grammar-checker/"}),(0,b.jsx)("meta",{property:"og:title",content:"Free Grammar Checker \u2013 Spelling, Grammar & Style"}),(0,b.jsx)("meta",{property:"og:description",content:"Check spelling, grammar, punctuation and style for free with the open-source LanguageTool engine. No signup, text not stored."}),(0,b.jsx)("meta",{property:"og:url",content:"https://savedelete.com/free-grammar-checker/"}),(0,b.jsx)("meta",{property:"og:type",content:"website"}),(0,b.jsx)("meta",{property:"og:image",content:"https://savedelete.com/images/og-image-grammar.jpg"}
1),(0,b.jsx)("meta",{property:"og:image:width",content:"1200"}),(0,b.jsx)("meta",{property:"og:image:height",content:"630"}),(0,b.jsx)("meta",{property:"og:site_name",content:"SaveDelete"}),(0,b.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,b.jsx)("meta",{name:"twitter:title",content:"Free Grammar Checker \u2013 Spelling, Grammar & Style"}),(0,b.jsx)("meta",{name:"twitter:description",content:"Check spelling, grammar and punctuation for free. Up to 20,000 characters, no signup."}),(0,b.jsx)("meta",{name:"twitter:image",content:"https://savedelete.com/images/og-image-grammar.jpg"}),(0,b.jsx)("meta",{name:"keywords",content:"free grammar checker, grammar check, spell checker, punctuation checker, LanguageTool, proofreading tool"}),(0,b.jsx)("meta",{name:"author",content:"SaveDelete"}),(0,b.jsx)("meta",{name:"robots",content:"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"}),(0,b.jsx)("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"SoftwareApplication",name:"SaveDelete Grammar Checker",url:"https://savedelete.com/free-grammar-checker/",description:"Free grammar, spelling, punctuation and style checker powered by the open-source LanguageTool engine, running on SaveDelete's own server.",applicationCategory:"EducationalApplication",operatingSystem:"All",isAccessibleForFree:!0,datePublished:"2024-05-01",dateModified:"2026-09-19",screenshot:{"@type":"ImageObject",url:"https://savedelete.com/images/og-image-grammar.jpg",width:1200,height:630,caption:"Free Grammar Checker"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"},featureList:["Spelling, grammar, punctuation and style checks (LanguageTool engine)","English (US, UK, Australian, Canadian) and 12 more languages","Standard and Formal modes","Explanation and suggested correction for each issue","Readability score","Up to 20,000 characters per check","No registration required; text not stored"],author:{"@type":"Organization",name:"SaveDelete",url:"https://savedelete.com"}})}),(0,b.jsx)("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://savedelete.com/"},{"@type":"ListItem",position:2,name:"Free Tools",item:"https://savedelete.com/tools/"},{"@type":"ListItem",position:3,name:"Grammar Checker",item:"https://savedelete.com/free-grammar-checker/"}]})}),(0,b.jsx)("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:w.map(e=>{let{q:s,a:a}=e;return{"@type":"Question",name:s,acceptedAnswer:{"@type":"Answer",text:a}}})})})]}),(0,b.jsxs)("div",{className:"container mx-auto px-4",children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-4xl font-bold text-gray-900 mb-4",children:"Free Grammar Checker"}),(0,b.jsx)("p",{className:"text-xl text-gray-600 mb-4",children:"Spelling \u2022 Grammar \u2022 Punctuation \u2022 Style"}),(0,b.jsxs)("div",{className:"flex flex-wrap justify-center gap-4 text-sm",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-gray-700",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 text-green-600"}),(0,b.jsx)("span",{children:"Free, no signup"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-gray-700",children:[(0,b.jsx)(j.A,{className:"w-5 h-5 text-yellow-600"}),(0,b.jsx)("span",{children:"Up to 20,000 characters"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-gray-700",children:[(0,b.jsx)(c.A,{className:"w-5 h-5 text-blue-600"}),(0,b.jsx)("span",{children:"An explanation for every issue"})]})]})]}),(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-4 mb-6 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-gray-700 mb-3",children:"Check Mode"}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-2",children:[{value:"standard",label:"Standard",icon:(0,b.jsx)(i.A,{className:"w-4 h-4"})},{value:"academic",label:"Formal",icon:(0,b.jsx)(c.A,{className:"w-4 h-4"})}].map(e=>(0,b.jsxs)("button",{onClick:()=>k(e.value),className:"flex items-center justify-center gap-2 px-4 py-2 rounded-lg border-2 transition-all ".concat(a===e.value?"border-primary-600 bg-primary-50 text-primary-700 font-semibold":"border-gray-200 bg-white text-gray-700 hover:border-primary-300"),children:[e.icon,(0,b.jsx)("span",{className:"text-sm",children:e.label})]},e.value))}),(0,b.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Formal adds stricter style rules for essays, reports and business writing."})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{htmlFor:"grammar-language",className:"block text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2",children:[(0,b.jsx)(x.A,{className:"w-4 h-4"}),"Language"]}),(0,b.jsx)("select",{id:"grammar-language",value:S,onChange:e=>C(e.target.value),className:"w-full px-3 py-2 border-2 border-gray-200 rounded-lg bg-white text-gray-700 focus:border-primary-500 outline-none",children:N.map(e=>(0,b.jsx)("option",{value:e.code,children:e.label},e.code))}),(0,b.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"English needs a spelling variant: \u201ccolour\u201d is right in UK English, \u201ccolor\u201d in US English."})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{className:"lg:col-span-2 space-y-6",children:[(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Your Text"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)("label",{className:"cursor-pointer px-3 py-1.5 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium text-gray-700 transition-colors flex items-center gap-2",children:[(0,b.jsx)(y.A,{className:"w-4 h-4"}),"Upload TXT",(0,b.jsx)("input",{type:"file",accept:".txt",onCh
1ange:async e=>{var a;const t=null===(a=e.target.files)||void 0===a?void 0:a[0];if(t)if("text/plain"===t.type){const e=new FileReader;e.onload=e=>{var a;s(null===(a=e.target)||void 0===a?void 0:a.result)},e.readAsText(t)}else alert("Only TXT files are currently supported. For DOCX/PDF, please copy and paste the text.")},className:"hidden"})]}),(0,b.jsxs)("button",{onClick:()=>s(""),className:"px-3 py-1.5 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium text-gray-700 transition-colors flex items-center gap-2",children:[(0,b.jsx)(p.A,{className:"w-4 h-4"}),"Clear"]})]})]}),(0,b.jsx)("textarea",{value:e,onChange:e=>s(e.target.value),placeholder:"Paste or type your text here to check for grammar, spelling, and style issues...",className:"w-full h-64 p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent resize-none"}),(0,b.jsxs)("div",{className:"flex justify-between items-center mt-4",children:[(0,b.jsxs)("div",{className:"text-sm ".concat(e.length>f?"text-red-600 font-semibold":"text-gray-600"),children:[e.split(/\s+/).filter(e=>e).length," words \u2022 ",e.length.toLocaleString()," / ",f.toLocaleString()," characters"]}),(0,b.jsx)("button",{onClick:async()=>{if(e.trim())if(e.length>f)alert("Please check up to ".concat(f.toLocaleString()," characters at a time. Your text is ").concat(e.length.toLocaleString(),"."));else{L(!0),F(null);try{const s=await fetch("https://savedelete.com/api/check-grammar/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:e,mode:a,language:S})});if(!s.ok){const e=await s.json().catch(()=>({})),a=e.error||e.detail||"Server error: ".concat(s.status);throw new Error(a)}const t=await s.json();if(t.success){F(t);const s=[{text:e.substring(0,100)+(e.length>100?"...":""),date:(new Date).toISOString(),score:t.overallScore},...D.slice(0,9)];O(s),localStorage.setItem("grammarHistory",JSON.stringify(s))}else{const e=t.error||t.detail||"An unknown error occurred";alert("Error: "+e)}}catch(s){console.error("Grammar check error:",s);const e=s instanceof Error?s.message:"Failed to check grammar";alert(e)}finally{L(!1)}}else alert("Please enter some text to check")},disabled:A||!e.trim()||e.length>f,className:"px-6 py-2.5 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center gap-2",children:A?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white"}),"Checking..."]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.A,{className:"w-4 h-4"}),"Check Grammar"]})})]})]}),T&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:E?"Corrected Text":"Original Text with Issues"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:()=>G(!E),className:"px-3 py-1.5 bg-primary-100 hover:bg-primary-200 text-primary-700 rounded-lg text-sm font-medium transition-colors",children:E?"Show Original":"Show Corrected"}),(0,b.jsxs)("button",{onClick:()=>{return e=E?T.correctedText:T.original,navigator.clipboard.writeText(e),void alert("Copied to clipboard!");var e},className:"px-3 py-1.5 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium text-gray-700 transition-colors flex items-center gap-2",children:[(0,b.jsx)(d.A,{className:"w-4 h-4"}),"Copy"]}),(0,b.jsxs)("button",{onClick:()=>((e,s)=>{const a=new Blob([e],{type:"text/plain"}),t=URL.createObjectURL(a),r=document.createElement("a");r.href=t,r.download=s,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(t)})(T.correctedText,"corrected-text.txt"),className:"px-3 py-1.5 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium text-gray-700 transition-colors flex items-center gap-2",children:[(0,b.jsx)(m.A,{className:"w-4 h-4"}),"Download"]})]})]}),(0,b.jsx)("div",{className:"p-4 bg-gray-50 rounded-lg border border-gray-200 whitespace-pre-wrap font-mono text-sm",children:E?T.correctedText:T.original})]}),T.corrections.length>0&&(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsxs)("h2",{className:"text-lg font-semibold text-gray-900 mb-4",children:["Issues Found (",T.corrections.length,")"]}),(0,b.jsx)("div",{className:"space-y-3",children:T.corrections.map((e,s)=>(0,b.jsx)("div",{className:"p-4 border-l-4 rounded-r-lg cursor-pointer transition-all ".concat(P(e.severity)," ").concat(U===e?"ring-2 ring-primary-500":""),onClick:()=>I(e),children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5",children:R(e.type)}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsx)("span",{className:"text-xs font-semibold uppercase",children:e.type}),(0,b.jsx)("span",{className:"text-xs px-2 py-0.5 rounded-full bg-white border",children:e.severity})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Original: "}),(0,b.jsx)("span",{className:"text-sm line-through",children:e.original})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Corrected: "}),(0,b.jsx)("span",{className:"text-sm font-semibold text-green-700",children:e.corrected}),e.alternatives&&e.alternatives.length>0&&(0,b.jsxs)("span",{className:"text-sm text-gray-600",children:[" ","(or: ",e.alternatives.join(", "),")"]})]}),(0,b.jsxs)("p",{className:"text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:"Why: "}),e.explanation]})]})]})]})},s))})]}),0===T.corrections.length&&(0,b.jsxs)("div",{className:"bg-green-50 border border-green-200 rounded-lg p-6 text-center",children:[(0,b.jsx)(i.A,{className:"w-12 h-12 text-green-600 mx-auto mb-3"}),(0,b.jsx)("h3",{className:"text-lg font-semibold text-green-900 mb-2",children:"Excellent! No Issues Found"}),(0,b.jsx)("p",{className:"text-green-700",children:"Your text appears to be grammatically correct."})]}),T.suggestions&&T.suggestions.length>0&&(0,b.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-6",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold text-blue-900 mb-3 flex items-center gap-2",children:[(0,b.jsx)(h.A,{className:"w-5 h-5"}),"Writing Suggestions"]}),(0,b.jsx)("ul",{className:"space-y-2",children:T.suggestions.map((e,s)=>(0,b.jsxs)("li",{className:"text-blue-800 flex items-start gap-2",children:[(0,b.jsx)("span",{className:"mt-1.5 w-1.5 h-1.5 rounded-full bg-blue-600 flex-shrink-0"}),(0,b.jsx)("span",{children:e})]},s))})]})]})]}),(0,b.jsxs)("div",{className:"lg:col-span-1 space-y-6",children:[T&&(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-gray-900 mb-4",children:"Overall Score"}),(0,b.jsxs)("div",{className:"text-center mb-6",children:[(0,b.jsx)("div",{className:"text-5xl font-bold ".concat(W(T.overallScore)," mb-2"),children:T.overallScore}),(0,b.jsx)("div",{className:"text-sm text-gray-600",children:"out of 100"}),(0,b.jsx)("div",{className:"mt-4 w-full bg-gray-200 rounded-full h-3",children:(0,b.jsx)("div",{className:"h-3 rounded-full transition-all ".concat(T.overallScore>=90?"bg-green-600":T.overallScore>=75?"bg-yellow-600":T.overallScore>=50?"bg-orange-600":"bg-red-600"),style:{width:"".concat(T.overallScore,"%")}})})]}),(0,b.jsxs)("div",{className:"space-y-3 pt-4 border-t border-gray-200",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-gray-600",children:"Engine:"}),(0,b.jsx)("span",{className:"font-medium",children:"basic"===T.checkType?"Basic rules (LanguageTool unavailable)":T.checkType})]}),(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-gray-600",children:"Mode:"}),(0,b.jsx)("span",{className:"font-medium",children:"academic"===T.mode?"Formal":"Standard"})]}),T.language&&T.language.name&&(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-gray-600",children:"Language:"}),(0,b.jsx)("span",{className:"font-medium",children:T.language.name})]}),T.note&&(0,b.jsx)("p",{className:"text-xs text-gray-500 pt-2",children:T.note})]})]}),T&&T.statistics&&(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2",children:[(0,b.jsx)(l.A,{className:"w-5 h-5"}),"Statistics"]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Words"}),(0,b.jsx)("span",{className:"font-semibold",children:T.statistics.wordCount})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Sentences"}),(0,b.jsx)("span",{className:"font-semibold",children:T.statistics.sentenceCount})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Paragraphs"}),(0,b.jsx)("span",{className:"font-semibold",children:T.statistics.paragraphCount})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center pt-3 border-t border-gray-200",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Readability"}),(0,b.jsxs)("span",{className:"font-semibold",children:[T.statistics.readabilityScore,"/100"]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Grade Level"}),(0,b.jsx)("span",{className:"font-semibold text-sm",children:T.statistics.gradeLevel})]}),T.statistics.averageWordLength&&(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Avg Word Length"}),(0,b.jsx)("span",{className:"font-semibold",children:T.statistics.averageWordLength.toFixed(1)})]}),void 0!==T.statistics.complexWords&&(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-sm text-gray-600",children:"Complex Words"}),(0,b.jsx)("span",{className:"font-semibold",children:T.statistics.complexWords})]})]})]}),(0,b.jsxs)("div",{className:"bg-gradient-to-br from-primary-600 to-primary-700 rounded-lg shadow-sm p-6 text-white",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"What You Get"}),(0,b.jsxs)("ul",{className:"space-y-3",children:[(0,b.jsxs)("li",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 flex-shrink-0 mt-0.5"}),(0,b.jsx)("span",{className:"text-sm",children:"Free, with no signup and no daily limit"})]}),(0,b.jsxs)("li",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 flex-shrink-0 mt-0.5"}),(0,b.jsx)("span",{className:"text-sm",children:"Up to 20,000 characters per check"})]}),(0,b.jsxs)("li",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 flex-shrink-0 mt-0.5"}),(0,b.jsx)("span",{className:"text-sm",children:"Spelling, grammar, punctuation and style, each with an explanation"})]}),(0,b.jsxs)("li",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 flex-shrink-0 mt-0.5"}),(0,b.jsx)("span",{className:"text-sm",children:"English and 12 more languages"})]}),(0,b.jsxs)("li",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.A,{className:"w-5 h-5 flex-shrink-0 mt-0.5"}),(0,b.jsx)("span",{className:"text-sm",children:"Your text is checked on our own server and not stored"})]})]})]}),D.length>0&&(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2",children:[(0,b.jsx)(o.A,{className:"w-5 h-5"}),"Recent Checks"]}),(0,b.jsx)("div",{className:"space-y-2",children:D.slice(0,5).map((e,a)=>(0,b.jsxs)("div",{className:"p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer",onClick:()=>s(e.text),children:[(0,b.jsx)("div",{className:"text-sm text-gray-900 truncate mb-1",children:e.text}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs text-gray-600",children:[(0,b.jsx)("span",{children:new Date(e.date).toLocaleDateString()}),(0,b.jsxs)("span",{className:"font-semibold ".concat(W(e.score)),children:["Score: ",e.score]})]})]},a))})]})]})]}),(0,b.jsxs)("div",{className:"mt-12 bg-white rounded-lg shadow-sm p-8",children:[(0,b.jsx)("h2",{className:"text-2xl font-bold text-gray-900 mb-4",children:"Free Grammar Checker, Powered by LanguageTool"}),(0,b.jsxs)("div",{className:"prose max-w-none",children:[(0,b.jsx)("p",{className:"text-gray-700 mb-4",children:"This checker runs LanguageTool, a widely used open-source grammar engine, on our own server. It checks spelling, grammar, punctuation and style, explains each issue, and shows a corrected version of your text that you can copy or download. LanguageTool's own free website checks 2,000 characters at a time; here you can check up to 20,000, with no account."}),(0,b.jsx)("h3",{className:"text-xl font-semibold text-gray-900 mt-6 mb-3",children:"Features"}),(0,b.jsxs)("ul",{className:"list-disc list-inside space-y-2 text-gray-700",children:[(0,b.jsx)("li",{children:"Spelling, grammar and punctuation correction, with an explanation for each issue"}),(0,b.jsx)("li",{children:"Style suggestions, with stricter rules in Formal mode"}),(0,b.jsx)("li",{children:"English with US, UK, Australian or Canadian spelling, plus 12 more languages"}),(0,b.jsx)("li",{children:"Readability score and grade level"}),(0,b.jsx)("li",{children:"Upload a TXT file, and copy or download the corrected text"}),(0,b.jsx)("li",{children:"Recent checks kept on your own device"})]}),(0,b.jsx)("h3",{className:"text-xl font-semibold text-gray-900 mt-6 mb-3",children:"What It Doesn't Do"}),(0,b.jsxs)("p",{className:"text-gray-700 mb-4",children:["It does not rewrite sentences, change your tone, or check for plagiarism, and it does not include the AI-based rules LanguageTool reserves for its paid cloud service, so it can miss some commonly confused words. If you need those, our"," ",(0,b.jsx)("a",{href:"/article/grammar-checker-comparison-2025-savedelete-vs-grammarly-vs-languagetool/",className:"text-primary-600 hover:underline",children:"comparison of Grammarly and LanguageTool"})," ","covers the paid options."]}),(0,b.jsx)("h3",{className:"text-xl font-semibold text-gray-900 mt-6 mb-3",children:"How It Works"}),(0,b.jsxs)("ol",{className:"list-decimal list-inside space-y-2 text-gray-700",children:[(0,b.jsx)("li",{children:"Paste or type your text above, or upload a TXT file"}),(0,b.jsx)("li",{children:"Choose the language, and Formal mode if you want stricter style checks"}),(0,b.jsx)("li",{children:'Click "Check Grammar"'}),(0,b.jsx)("li",{children:"Review each suggestion and its explanation"}),(0,b.jsx)("li",{children:"Copy or download the corrected text"})]}),(0,b.jsx)("h3",{className:"text-xl font-semibold text-gray-900 mt-8 mb-3",children:"Frequently Asked Questions"}),(0,b.jsx)("div",{className:"space-y-4",children:w.map(e=>{let{q:s,a:a}=e;return(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"font-semibold text-gray-900",children:s}),(0,b.jsx)("p",{className:"text-gray-700",children:a})]},s)})})]})]})]})]})}}}]); 2//# sourceMappingURL=22.ffc7c5d1.chunk.js.map
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.