Editly

Автор: Vibe Apps Pro Team · Опубліковано: 2026-05-08

Як прибрати зайві пробіли з тексту онлайн (швидкий фікс)

Встав текст — і фікс: подвійні пробіли, нерозривні пробіли й розриви рядків з PDF зникають за секунди. Безкоштовний браузерний інструмент, без завантаження файлів.

Текст до і після видалення зайвих пробілів — показано усунення подвійних і нерозривних пробілів

Якщо ти хоч раз вставляв контент із PDF, документа Word чи вебсторінки й отримував подвійні пробіли між кожним словом — ти зіткнувся з однією з найпоширеніших дратівливих штук у роботі з текстом. Це не глюки відображення — це реальні символи, вбудовані в твій контент, і самі вони нікуди не зникнуть.

Ось як прибрати їх швидко.

Швидкий шлях: інструмент Виправити пробіли

Встав свій текст у наш Виправити пробіли — працює на 100% у вкладці браузера, твій текст ніколи не передається на жоден сервер — вибери потрібні операції й скопіюй очищений результат. Секунди — і готово.

Інструмент покриває сім конкретних операцій очищення:

ОпераціяЩо виправляєДо → Після
Прибрати зайві пробілиКілька пробілів схлопуються в одинслово словослово слово
Виправити розриви рядків з PDFПрибрано жорсткі переноси всередині реченняшвидкий коричневий\nлисшвидкий коричневий лис
Прибрати всі розриви рядківВесь документ сплющений в один блокрядок 1\nрядок 2рядок 1 рядок 2
Прибрати порожні рядкиВидалено пусті рядки між абзацамиабзац\n\n\nабзацабзац\n\nабзац
Обрізати краї рядківПрибрано пробіли на початку/в кінці рядка·· привіт ··привіт
Прибрати спецсимволиВидалено не-ASCII символиrésuméresume
Випрямити лапкиТипографські «фігурні» лапки → прямі ASCII"привіт""привіт"

Обирай одну чи кілька — вони складаються. Панель прев'ю показує точно, що зміниться, перш ніж ти щось скопіюєш.

Чому вставлений текст приходить із зайвими пробілами

Розуміння джерела робить фікс менш загадковим.

PDF: геометрія, а не текст

PDF зберігає текст як координати гліфів, а не рядок символів. Витягання — це задача реверс-інжинірингу:

Внутрішньо в PDF: [гліф "с" на x=100] [гліф "л" на x=108] ... [гліф "с" на x=180] ...
                                                                    ↑ проміжок = 22px
Екстрактор:       "слово" + "  " + "слово"    ← проміжок > порогу → вставлено два пробіли

Якщо координатний проміжок між двома словами трохи ширший за поріг екстрактора — типово для тексту з вирівнюванням по ширині чи широким кернінгом — вставляється два пробіли. Потенційно постраждати може будь-яка пара слів. Це не баг — це геометричне вгадування без ідеальної відповіді.

Word і InDesign: навмисний NBSP

Microsoft Word і InDesign вставляють нерозривні пробіли (U+00A0) у конкретних позиціях:

Ти вводиш:      10 кг
Word зберігає:  10[U+00A0]кг   ← нерозривний пробіл, запобігає переносу рядка між числом і одиницею
Ти бачиш:       10 кг          ← виглядає ідентично звичайному пробілу

Легітимна типографська поведінка в текстовому редакторі. Невидиме забруднення в ту мить, коли вставляєш це в будь-який інший контекст.

Копіпаст з HTML: пастка  

Будь-яка сутність   у вихідному HTML приходить у твій буфер обміну як U+00A0:

HTML-джерело:   <td>Нью&nbsp;Йорк</td>
Буфер обміну:   Нью[U+00A0]Йорк
Текстовий редактор: Нью Йорк    ← виглядає нормально, поводиться зламано

Встав таблицю з сайту в звичайне текстове поле — і матимеш десятки таких символів.

П'ять символів пробілу, які створюють проблеми

Не всі «пробіли» — однаковий символ. Ось ті, з якими ти реально стикнешся:

СимволUnicodeЯк з'являєтьсяВізуальна відмінність
Звичайний пробілU+0020Введено вручнуНемає
Нерозривний пробілU+00A0Word, InDesign, HTML &nbsp;Немає — невидимий
Пробіл нульової шириниU+200BЕкспорти з CMS, Markdown-парсериНемає — справді невидимий
Емспейс (em space)U+2003Дизайн-інструменти, деякі CMSТрохи ширший
Тонкий пробіл (thin space)U+2009Типографські шаблониТрохи вужчий

Інструмент Виправити пробіли обробляє всі ці варіанти. Регекс-підхід вимагає явних Unicode-кодів для кожного з них — а це підводить нас до ручного методу.

Ручний підхід через регулярні вирази

Якщо ти обробляєш багато документів, будуєш пайплайн, чи просто хочеш розуміти, що відбувається, Пошук і заміна впорається з цим за допомогою регулярок.

Схлопнути подвійні пробіли:

Знайти:  [ \t]+
Замінити на: (один пробіл)
Флаги:   g

Якщо замість цього використати \s+, воно з'їсть і переноси рядків — не роби так, якщо не хочеш отримати один величезний абзац. [ \t]+ бере тільки горизонтальні пробіли.

Замінити нерозривні пробіли:

Знайти:     
Замінити на: (звичайний пробіл)
Флаги:   gu

Флаг u обов'язковий. Без нього трактується як буквальний рядок, а не Unicode-екранування, і патерн мовчки нічого не знаходить.

Виправити артефакти розриву рядків з PDF:

Знайти:  (?<!\n)\n(?!\n)
Замінити на: (пробіл)
Флаги:   g

Цей патерн із негативним lookahead/lookbehind прибирає одинарні переноси рядків (артефакти всередині речення), лишаючи подвійні переноси недоторканими, тож розриви абзаців виживають. Точніше за «прибрати всі розриви рядків».

За глибшим розбором синтаксису патернів, груп захоплення й квантифікаторів — гайд з регулярних виразів: пошук і заміна містить повний довідник.

Нерозривні пробіли: невидима проблема

Заслуговують на окрему увагу, бо U+00A0 спричиняє подальші проблеми, яких немає у звичайних подвійних пробілів.

Розбіжність у кількості слів. Наївний спліт по пробілу (text.split(' ')) не розділить рядок по U+00A0. "Нью Йорк" з NBSP лишається одним токеном. Наш Лічильник слів використовує Intl.Segmenter — стандартний W3C API для мовно-залежної токенізації — який коректно обробляє Unicode-пробіли. Але встав свій текст у будь-яку платформу, що використовує простіший підхід, і твій підрахунок буде хибним.

Регулярки ламаються тихо. \s у JavaScript матчить таб, пробіл, перенос рядка, повернення каретки — але не U+00A0 за замовчуванням. Патерн на кшталт /\s+/g пропустить кожен нерозривний пробіл без попередження. Якщо пишеш регулярку для обробки вставленого користувачем контенту, додай U+00A0 явно: [ \t ]+.

Забруднення копіпастом у форматуванні документа. Це та сама категорія проблем із невидимими символами, що розглянута в статті скільки слів на сторінці — символи, що виглядають нормально на екрані, але спотворюють підрахунок символів, довжину рядків і розрахунки макета сторінки.

Пробіли нульової ширини: інший невидимий символ

Пробіли нульової ширини (U+200B) трапляються в тексті, експортованому з CMS на кшталт WordPress, Contentful і Notion, а також з деяких Markdown-парсерів. По-справжньому невидимі — без жодної ширини взагалі.

Виглядає як:   тутслово
Насправді це:  тут[U+200B]слово
Код бачить:    два токени: "тут" + "слово"

Твій редактор його не підсвітить. Перевірка орфографії його ігнорує. Але токенізація слів і підрахунок символів його бачать. Щоб прибрати: знайди , заміни на нічого, флаги gu — або запусти «Прибрати спецсимволи» в інструменті Виправити пробіли, який одним проходом обробляє всі варіанти не-ASCII пробілів.

Коли пробіли чіпати не можна

Очищення пробілів безпечне для прози. Для всього, де відступи несуть зміст, воно руйнівне — і саме на цьому люди реально втрачають роботу.

Python. Відступ і є структурою блоків. Згортання початкових пробілів не переформатує файл, а змінює те, які інструкції опиняться всередині якого циклу, — або видасть IndentationError, якщо пощастить і воно впаде голосно.

YAML. Та сама проблема, наслідки гірші. Вкладеність виражена винятково початковими пробілами, тож один прохід очищення може тихо перепідпорядкувати ключ і перетворити маніфест Kubernetes чи конфіг CI на валідний YAML, який означає не те, що ти задумав. До того ж YAML забороняє табуляцію для відступів, тож доброзичлива заміна пробілів на таби ламає файл остаточно.

Markdown. Чотири початкові пробіли позначають блок коду, а два кінцеві — жорсткий перенос рядка. Операція «обрізати кінці рядків» прибирає ці переноси, тихо перезбираючи твої абзаци.

Файли diff, patch і TSV. У TSV символи табуляції — це роздільники колонок, тож згортання послідовностей пробільних символів зліплює колонки докупи. У patch-файлі початкові пробіл, + і - є частиною формату.

Правило просте: чисти пробіли у прозі й ніколи — у структурованому тексті. Якщо треба виправити конкретну проблему всередині файлу коду чи конфігу, влучай точково регуляркою в «Пошуку і заміні», а не жени загальне очищення по всьому документу. І оскільки кожна операція тут необов'язкова та має попередній перегляд, можна запустити лише потрібну — панель «до / після» покаже точно, що саме зміниться, ще до того, як ти це підтвердиш.

Перед очищенням: 30-секундне сортування

Не кожному документу потрібні всі сім операцій. Швидка перевірка спочатку:

  1. Пошук двох пробілів підряд. Якщо є збіги → забруднення подвійними пробілами з PDF чи старої звички друкувати на машинці.
  2. Пошук у редакторі з підтримкою регулярок. Збіги → забруднення нерозривними пробілами з Word чи HTML.
  3. Перевір рядки, що обриваються на півслові. Ознака артефактів витягання колонок із PDF.
  4. Перевір, чи виглядають відступи між абзацами непослідовно. Кілька порожніх рядків між абзацами → прохід очищення «порожніх рядків» це нормалізує.

Розуміючи, з якою саме проблемою маєш справу, запускаєш тільки потрібні операції — а панель прев'ю підтверджує результат ще до того, як ти щось застосуєш.


Зайві пробіли — одна з тих проблем форматування, що здається дрібницею, поки не перестає нею бути: поки кількість слів не виявиться хибною, регулярка не зламається, чи клієнт не запитає, чому документ виглядає по-різному в кожному абзаці. Дві хвилини очищення в момент вставки економлять значно більше часу далі по процесу.

Що робити, коли текст уже чистий

Очищення зазвичай перший крок конвеєра, а не вся робота. Два продовження трапляються постійно:

Сортування й дедуплікація списку. Коли кінцеві пробіли зникли, яблуко і яблуко нарешті порівнюються як однакові — саме тому очищення має йти першим. Спочатку очисти, потім сортуй рядки за алфавітом: там розібрано онлайн-інструмент, вбудовану команду VS Code й прапори термінального sort, а разом із ними — чутливість до регістру й локальне сортування, які тихо змінюють результат.

Порівняння двох версій файлу. Невидимі символи — головне джерело хибних спрацювань у diff: два візуально однакові рядки позначаються як змінені лише тому, що один закінчується нерозривним пробілом або CRLF. Якщо порівнюєш конфіги, розбіжності в .env чи дві редакції розділу, стаття порівняти два текстові файли онлайн окремо розбирає пастки з кодуванням, BOM і символами кінця рядка — а попереднє очищення обох сторін і є тим, що взагалі робить diff читабельним.

Часті запитання

Чому у вставленому тексті з'являються зайві пробіли?

PDF зберігає текст як координати x/y, а не як рядок символів. Коли рідер PDF витягує текст, він вгадує межі слів за відстанню між позиціями гліфів — якщо проміжок ширший за очікуваний, він вставляє два пробіли замість одного. Microsoft Word і InDesign додають нерозривні пробіли (U+00A0) після скорочень, між числами й одиницями виміру («10 кг»), і після деяких розділових знаків. HTML-контент, вставлений із браузера, часто містить сутності &nbsp;, які приходять як U+00A0. Жоден з них не відрізняється візуально від звичайного пробілу на екрані, але вони ламають підрахунок слів, пошукову індексацію й пошук за патерном.

Що таке нерозривний пробіл і чому він невидимий?

Нерозривний пробіл (Unicode U+00A0) — це символ пробілу, який не дає рядку розірватися на цій позиції. Текстові редактори використовують його навмисно — «Нью-Йорк» із нерозривним пробілом лишається на одному рядку замість того, щоб розбитися на два. Проблема в тому, що він виглядає точно як звичайний пробіл (U+0020) у будь-якому текстовому редакторі. Він проявляє себе тільки коли ти вставляєш текст у редактор коду, запускаєш регулярку, яка його пропускає, або помічаєш, що інструмент підрахунку слів читає «Нью-Йорк» (з NBSP) як одне слово замість двох. Інструмент Виправити пробіли виявляє й замінює U+00A0 на звичайні пробіли.

Який регулярний вираз прибирає кілька пробілів підряд?

Щоб згорнути будь-яку послідовність із двох чи більше звичайних пробілів в один, використай: /[ \t]+/g із заміною на один пробіл. Це працює тільки з горизонтальними пробілами — розриви абзаців не постраждають. Щоб заодно зловити нерозривні пробіли: /[ \t\u00A0]+/gu — зверни увагу на флаг u, обов'язковий для роботи з Unicode-властивостями в JavaScript. Не використовуй для цього /\s+/g — \s матчить і переноси рядків, а це схлопне весь документ в один абзац.

Чому в інструменті Виправити пробіли є окрема опція «Fix PDF line breaks»?

Витягання тексту з PDF породжує дві різні проблеми, які потребують різних фіксів. «Прибрати зайві пробіли» схлопує кілька пробілів в один. «Виправити розриви рядків з PDF» усуває перенос рядка всередині речення — коли копіюєш текст із двоколонкового PDF, кожен рядок закінчується жорстким переносом, тож «швидкий коричневий\nлис перестрибує» стає двома рядками замість одного речення. Фікс прибирає одинарні переноси рядків (зберігаючи справжні розриви абзаців — подвійні переноси) і склеює назад слова, розірвані дефісом на межі рядка, на кшталт «інфор-\nмація» назад в «інформація».

Чи змінює видалення зайвих пробілів мою кількість слів?

Видалення звичайних подвійних пробілів не змінює кількість слів — межі слів визначаються послідовностями літер, а не кількістю пробілів. Але заміна нерозривних пробілів (U+00A0) на звичайні може змінити підрахунок, бо нерозривний пробіл, приклеєний між словами, змушує токенізатор читати «Нью-Йорк» (з NBSP) як один токен. Після очищення звичайними пробілами він коректно рахується як два слова. Якщо після запуску фіксу пробілів кількість слів підскочила — це токенізатор нарешті читає твій текст правильно.

Чи можна прибрати пробіли з дуже великого документа без зависання сторінки?

Так. Уся обробка в інструменті Виправити пробіли відбувається в JavaScript-рушії твого браузера — жоден файл нікуди не завантажується. Для типових документів (до приблизно 50 000 слів) операції завершуються менш ніж за 50 мс. Для будь-чого, що людина реально вставила б — пости в блог, листи, юридичні документи, наукові статті — це обробляється миттєво, без затримок інтерфейсу.

У чому різниця між «Trim line endings» і «Remove extra spaces»?

«Прибрати зайві пробіли» схлопує кілька послідовних пробілів усередині рядка в один. «Обрізати краї рядків» видаляє пробіли на початку й у кінці кожного окремого рядка. Рядок на кшталт ' привіт світ ' має обидві проблеми: обрізка чистить краї до 'привіт світ', а тоді схлопування пробілів перетворює це на 'привіт світ'. Запустивши обидві операції разом, отримуєш повністю нормалізований рядок.

Спробуйте наш безкоштовний лічильник слів

Миттєво рахуйте слова, перевіряйте читабельність та аналізуйте текст.

Відкрити лічильник слів