{"id":25,"date":"2025-04-25T13:39:17","date_gmt":"2025-04-25T11:39:17","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?p=25"},"modified":"2026-10-03T16:58:21","modified_gmt":"2026-10-03T14:58:21","slug":"offline-languagetool-with-eloquent-spell-checking-on-linux-without-the-cloud","status":"publish","type":"post","link":"https:\/\/linuxundich.de\/en\/gnu-linux\/offline-languagetool-with-eloquent-spell-checking-on-linux-without-the-cloud\/","title":{"rendered":"Offline LanguageTool with Eloquent: Spell Checking on Linux Without the Cloud"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I write a lot, and like most people who write a lot, I regularly make small typos, spelling mistakes, clumsy word repetitions, or stylistic slips. For the final proofreading of my texts I&#8217;ve often used LanguageTool, but that usually meant opening the browser or even running my own server to protect my privacy. That&#8217;s now much easier: Eloquent is a small desktop app that brings LanguageTool to your machine completely offline, with no cloud, no internet connection, and no data sent to third parties.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li class=\"\"><a href=\"#datenschutz-durch-offline-nutzung\">Privacy Through Offline Use<\/a><\/li><li class=\"\"><a href=\"#installation-von-eloquent-uber-flathub\">Installing Eloquent from Flathub<\/a><\/li><li class=\"\"><a href=\"#so-arbeitet-ihr-mit-eloquent\">How to Work with Eloquent<\/a><\/li><li class=\"\"><a href=\"#integration-in-firefox-oder-libre-office\">Integration with Firefox or LibreOffice<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/sonnyp\/Eloquent\">Eloquent<\/a> is a standalone GNOME app that makes LanguageTool&#8217;s spell and grammar checking available locally. Unlike many LanguageTool integrations, it&#8217;s not a plugin but a separate program. You open Eloquent, paste in your text, for example from a Markdown editor like <a href=\"https:\/\/apps.gnome.org\/de\/Apostrophe\/\">Apostrophe<\/a> or a CMS like <a href=\"https:\/\/linuxundich.de\/tag\/wordpress\/\" data-type=\"post_tag\" data-id=\"103\">WordPress<\/a>, and get feedback on spelling, grammar, and style. That makes the app a particularly good fit for users who like plain-text-based workflows.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"datenschutz-durch-offline-nutzung\">Privacy Through Offline Use<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A key point is that everything is processed completely offline. Eloquent doesn&#8217;t talk to any external servers, neither LanguageTool&#8217;s nor anyone else&#8217;s. The check runs locally on your machine, which better protects sensitive content and makes the program suitable for professional use as well. Anyone who wanted to use LanguageTool without an online connection used to have to run their own server. I described that approach <a href=\"https:\/\/linuxundich.de\/gnu-linux\/languagetool-auf-eigenem-server-installieren\/\">in an earlier post<\/a> (in German). With Eloquent, that extra effort is gone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installation-von-eloquent-uber-flathub\">Installing Eloquent from Flathub<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eloquent is available as a Flatpak on <a href=\"https:\/\/flathub.org\/apps\/re.sonny.Eloquent\">Flathub<\/a>, which makes installation much easier on all common distributions. If Flatpak and Flathub are already set up, this command is all you need. Or, if your browser is configured for it, just click the install button on the Flathub page.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ &lt;strong&gt;flatpak install flathub re.sonny.Eloquent&lt;\/strong&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After that, you can start the app from the application menu or from the terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ &lt;strong&gt;flatpak run re.sonny.Eloquent&lt;\/strong&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If Flatpak isn&#8217;t set up yet, <a href=\"https:\/\/flathub.org\/setup\">Flathub has a guide<\/a> for pretty much all common distributions. One small note: since Eloquent ships its own dictionaries, the app takes up just under 750 MB of drive space together with all the data it needs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"so-arbeitet-ihr-mit-eloquent\">How to Work with Eloquent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Using it is straightforward: paste in your text and check the suggestions. You can copy any paragraphs, articles, or complete texts into the input field. Eloquent marks potential mistakes and stylistic issues, much like the web version of LanguageTool. I did notice one small problem: with longer texts, the correction hints sometimes disappear. The bug is known and documented, so a fix should follow in future versions.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac17711bbcb6&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac17711bbcb6\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2025\/04\/eloquent-languagetool-gnome_01-1280x963.webp\" alt=\"Eloquent reliably catches needless word repetitions and stylistic weaknesses, with no internet connection or cloud analysis.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Eloquent reliably catches needless word repetitions and stylistic weaknesses, with no internet connection or cloud analysis.<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac17711bc4b6&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac17711bc4b6\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2025\/04\/eloquent-languagetool-gnome_02-1280x963.webp\" alt=\"Typical spelling mistakes and grammar problems are marked right away, and you get suggestions for corrections so you can improve your texts quickly.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Typical spelling mistakes and grammar problems are marked right away, and you get suggestions for corrections so you can improve your texts quickly.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"integration-in-firefox-oder-libre-office\">Integration with Firefox or LibreOffice<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The LanguageTool server started by Eloquent can also be used in other programs. If you use the <a href=\"https:\/\/languagetool.org\/insights\/de\/beitrag\/add-on-de\/\">LanguageTool browser add-on<\/a>, for example in Firefox or Chrome, you can enable the <em>Local server (localhost)<\/em> mode [CHECK: exact English label] in its settings. Spell checking on web pages then also runs locally, without a connection to the internet. You can configure LanguageTool in LibreOffice in a similar way.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac17711bc847&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac17711bc847\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2025\/04\/firefox-languagetool_01-1280x845.webp\" alt=\"In the browser add-on's settings, you can switch LanguageTool to a local server, so you check your texts without any cloud connection.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">In the browser add-on&#8217;s settings, you can switch LanguageTool to a local server, so you check your texts without any cloud connection.<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac17711bcb2a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac17711bcb2a\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2025\/04\/firefox-languagetool_02-1280x845.webp\" alt=\"Once the local server is active, spell checking works right in the browser, for example when writing emails or blog comments.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Once the local server is active, spell checking works right in the browser, for example when writing emails or blog comments.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">By default, Eloquent starts the LanguageTool server automatically when you log in. That gives you quick access, but it comes with some memory use. The system monitor shows that the Java backend takes up around 250 MB of RAM. CPU load is usually unremarkable. If you only want to use LanguageTool when you need it, you can of course remove Eloquent from autostart, for example with GNOME Tweaks or a comparable tool for your desktop environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can run LanguageTool locally, too: no internet connection and no data sent to third parties. Eloquent is a lean GNOME app that turns LanguageTool into a desktop application.<\/p>\n","protected":false},"author":2,"featured_media":24,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"lui_source_id":44464,"lui_source_hash":"d984495351b94609f20117904dc52046de5290c7cae27146e8057c79964567ea","lui_source_translated":"2026-10-03","lui_source_reviewed":true,"lui_via_url":"","lui_via_label":"","lui_source_url":"","lui_source_label":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-25","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gnu-linux"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/comments?post=25"}],"version-history":[{"count":1,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/25\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/25\/revisions\/41"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/24"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=25"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/categories?post=25"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/tags?post=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}