По каким правилам это работает
Пустая строка начинает новый абзац. Одиночный перенос внутри абзаца становится <br> либо обычным пробелом — как вы выберете.
Подряд идущие строки с дефисом, звёздочкой или «•» превращаются в маркированный список, а строки вида «1.» или «1)» — в нумерованный. Правило намеренно строгое: списком становится только последовательность, иначе любое предложение с дефисом ломало бы разметку.
Адреса http:// и https:// становятся ссылками. Всё остальное остаётся текстом.
Разбор на примере
Вставьте строку-заголовок, пустую строку, короткий абзац, снова пустую строку и три строки, каждая с дефиса. На выходе будет: отдельный абзац для первой строки, отдельный абзац для второго блока и список <ul> из трёх пунктов <li> для третьего — та же форма, что и была видна в обычном тексте, просто выраженная разметкой.
Добавьте в этот текст любой адрес — он станет ссылкой, а точка в конце предложения останется снаружи ссылки, где ей и место. Добавьте угловую скобку — она вернётся как <, видимым символом, а не разметкой. Больше ничего не меняется: конвертер читает структуру уже написанного текста, а не навязывает свою.
Сначала экранирование, потом разметка
Порядок здесь важнее самих правил. Символы <, > и & экранируются до того, как добавляется первый тег. Поэтому текст, который выглядит как HTML, останется видимым текстом и не станет разметкой.
Если сделать наоборот — сначала расставить теги, потом экранировать, — сломаются собственные теги инструмента; а если не экранировать вовсе, любой вставленный фрагмент чужой разметки попадёт на страницу как есть. Это ровно тот путь, которым появляются XSS-уязвимости. Кавычки экранируются в " по той же причине, но применительно к атрибутам: кавычка внутри текста, попавшего в значение атрибута без экранирования, могла бы закрыть этот атрибут раньше времени. Правило простое и не знает исключений — экранируется всё и всегда, а не «только там, где сейчас важно».
Четыре настройки и что каждая меняет
«Сохранять одиночные переносы строк внутри абзаца», включено по умолчанию, определяет судьбу строк одного блока, не разделённых пустой строкой: включено — каждая строка заканчивается тегом <br> и остаётся на своей строке; выключено — строки склеиваются одним пробелом в единый абзац. «Превращать блоки со списками в списки» решает, становится ли размеченный блок списком вообще — при выключенной настройке он остаётся обычным абзацем вместе с дефисами и цифрами. «Превращать веб-адреса в ссылки» управляет тем, становится ли найденный адрес ссылкой <a> — выключено, и он остаётся обычным экранированным текстом. «Целая HTML-страница» оборачивает фрагмент в doctype, head и body, подробнее об этом ниже.
Частая ошибка и что делают кавычки
Вставить текст, в котором уже есть HTML — скопированный, например, с веб-страницы, — в инструмент, который его не экранирует, — вот как случайный <div> из источника ломает вёрстку там, куда вставили результат. Здесь так не выйдет: каждая угловая скобка во входном тексте экранируется раньше, чем происходит что-либо ещё, поэтому скопированная разметка возвращается как видимый текст, описывающий сам себя, а не как разметка, срабатывающая второй раз.
Не то же самое, что CSV в TSV
Этот инструмент превращает обычный текст в HTML-разметку — абзацы, переносы, списки, ссылки. К разделителям в таблицах он отношения не имеет; для перекодировки между запятой и табуляцией есть отдельный конвертер CSV в TSV. Общее у них — только семейное сходство: оба читают обычный текст и превращают его в другой текстовый формат по заранее описанным правилам, а не угадывая построчно. Если цель — структурированные данные, а не разметка, то есть разбить строки на поля для программы, нужен конвертер текста в JSON, а не эта страница.
Фрагмент или целая страница
Фрагмент — это только <p>, <ul>, <a> и подобные теги. Его вставляют в CMS, в шаблон или в письмо, где обвязка страницы уже есть.
Целая страница добавляет doctype, элемент <html> с указанием языка, кодировку UTF-8 и viewport. Такой файл можно сохранить и открыть в браузере — он корректен сам по себе.
Чего инструмент не делает
Он не понимает Markdown: **жирный** останется звёздочками. Для Markdown нужен настоящий разборщик, а не набор правил для простого текста, и притворяться иначе было бы нечестно.
Он не сохраняет отступы, не создаёт заголовки из строк, набранных заглавными, и не угадывает таблицы. Каждое такое «умное» правило неизбежно срабатывает не там, где нужно, и портит текст молча.
Куда попадает ваш текст
Никуда. Разбор и сборка HTML выполняются в браузере, адреса для загрузки на этой странице нет. Перетащенный файл читается на вашем устройстве, и его содержимое просто попадает в поле ввода.
Ограничение на файл — десять мегабайт. Для текста этого хватает с большим запасом.