Konwerter BBCode do HTML
Konwertuj BBCode (składnia forów: [b], [url], [img]) na HTML. Obsługa wszystkich standardowych tagów BBCode. Kopiuj wynikowy HTML. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Znaczniki BBCode
rozpoznane struktury: linki, obrazki, listy, cytaty i bloki [code]
Znaki wejścia
BBCode po zamianie końców linii
Znaki wyniku
kod HTML gotowy do wklejenia — w podglądzie poniżej jest escapowany
<strong>BBCode to HTML Converter</strong><br>
<br>
Here is a quick demo:<br>
<br>
<em>Italic text</em> and <u>underlined text</u>.<br>
<br>
<a href="https://example.com" target="_blank" rel="noopener nofollow">Clickable link</a><br>
<br>
<blockquote><div class="bb-quote-meta">Alice wrote:</div>
This is a quote block.</blockquote>
<br>
<br>
<ul><li>First list item</li>
<li>Second list item</li>
</ul>
<br>
<br>
<pre><code>function hello() {
console.log('Hello');
}</code></pre>
| Znacznik BBCode | Wynik HTML | Uwagi |
|---|---|---|
| [b]tekst[/b] | <strong>tekst</strong> | przeliczony silnikiem narzędzia (Safe mode) |
| [i]tekst[/i] | <em>tekst</em> | kursywa |
| [u]tekst[/u] | <u>tekst</u> | podkreślenie |
| [s]tekst[/s] | <s>tekst</s> | przekreślenie |
| [url=https://example.com]link[/url] | <a href="https://example.com">link</a> | whitelist schematów: http, https, mailto; opcje newtab/nofollow |
| [email][email protected][/email] | <a href="mailto:[email protected]">[email protected]</a> | adres czyszczony FILTER_SANITIZE_EMAIL |
| [img]https://…[/img] | <img src="…" alt="Image" loading="lazy"> | tylko przy „Allow images”; inaczej zostaje sam adres |
| [quote]…[/quote] / [quote=Alice] | <blockquote>…</blockquote> | autor w wariantze [quote=Alice] skracany do 60 znaków |
| [list][*]…[/list] | <ul><li>…</li></ul> | [list=1|a|i] daje listę numerowaną <ol type="…"> |
| [code]…[/code] | <pre><code>…</code></pre> | treść chroniona przed dalszym parsowaniem i nl2br |
| [color=#c00]…[/color] / [size=14]…[/size] | <span style="color:#c00">…</span> | tylko przy „Allow styles”; kolor wg wzorca, rozmiar ograniczony do 8–72 px |
| nieznane [znaczniki] | (usuwane) | w trybie Safe mode — whitelist znaczników, nie czarna lista |
Bezpieczeństwo: whitelist, nie czarna lista — wejście jest escapowane (htmlspecialchars) zanim cokolwiek zostanie zamienione, [url]/[img] przyjmują tylko schematy http, https i mailto, a Safe mode usuwa wszystkie nierozpoznane znaczniki.
Warto wiedzieć — BBCode i bezpieczny HTML
Escape przed konwersją
Każde <, > i & w wejściu są zamieniane na encje HTML jeszcze przed zamianą znaczników BBCode. Wklejony <script> zostaje więc zwykłym tekstem — w podglądzie widzisz kod wynikowy, nigdy działający HTML, a Livewire renderuje go escapowanego.
Whitelist adresów URL
[url] i [img] przepuszczają tylko adresy zaczynające się od http, https albo mailto — javascript: czy dane binarne są odrzucane. Przy braku schematu narzędzie samo dopisuje https://. Odrzucenia w trybie Safe mode trafiają do notatek (kafelek „Blokady”).
Do czego służą opcje
Safe mode usuwa nierozpoznane znaczniki (whitelist). Nl2br zamienia końce linii na <br> (poza blokami [code]). Newtab dodaje target=„_blank” z rel=noopener, nofollow — rel=nofollow. Allow images i Allow styles włączają odpowiednio [img] oraz [color]/[size]/[center].
Skąd się wzięło BBCode
BBCode („bulletin board code”) powstał w latach 90. dla forów phpBB — pozwalał użytkownikom formatować posty bez dostępu do surowego HTML-a. Dziś wciąż żyje w forach, CMS-ach i komentarzach, a konwersja na HTML to najczęstszy krok przy migracji treści.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćKonwerter BBCode ↔ HTML – składnia forum na kod strony
BBCode (Bulletin Board Code) to uproszczony język znaczników używany na forach internetowych (phpBB, vBulletin, IPB, XenForo). Narzędzie konwertuje BBCode na HTML i z powrotem – przydatne przy migracji treści forum, imporcie postów do CMS, lub konwersji szablonów.
Podstawowe tagi BBCode
[b]tekst[/b] → tekst. [i]tekst[/i] → tekst. [u]tekst[/u] → tekst. [s]tekst[/s] → tekst. [color=red]tekst[/color] → . [size=14]tekst[/size] → . [font=Arial]tekst[/font] → .
Linki i media
[url]https://example.com[/url] → . [url=https://ex.com]Tekst[/url] → Tekst. [img]https://ex.com/img.jpg[/img] → . [img width=200]...[/img] →
. [video]URL[/video] → embed (YouTube, Vimeo). [email][email protected][/email] → mailto: link.
Układy i formatowanie
[quote]tekst[/quote] →
. [quote=Jan]...[/quote] →. [code]kod[/code] →. [code=php]. [list=1][*]...[/list] →
- . [table][tr][td]...[/table] → tabela HTML.
Dialekty BBCode – różnice między forami
BBCode nie jest standardem – każde forum może mieć inne tagi. phpBB: standardowe + [attachment], [flash]. vBulletin: [noparse], [highlight]. XenForo: [MEDIA], [SPOILER], [USER]. Discourse (nowoczesne): Markdown zamiast BBCode. Narzędzie obsługuje wspólny podzbiór wszystkich głównych dialektów.
Jak działa konwersja tagów forum na kod strony
Mechanizm opiera się na skanowaniu tekstu od lewej do prawej i rozpoznawaniu wzorca tagu: nawias kwadratowy, nazwa, opcjonalny parametr po znaku równości, nawias zamykający. Parser rozróżnia trzy postacie konstrukcji: tag otwierający (na przykład [b]), tag zamykający ([/b]) oraz tag otwierający z wartością ([url=https://example.com], [color=red], [size=14]). Każde rozpoznane wystąpienie zostaje zastąpione odpowiednikiem HTML — elementem liniowym (strong, em) albo blokiem (blockquote, pre). Reszta tekstu przechodzi bez zmian.
Zanim cokolwiek zostanie zamienione, treść wejściowa jest poddawana escapowaniu znaków specjalnych HTML: nawiasu ostrokątnego otwierającego i zamykającego oraz ampersanda. Dzięki temu tekst wklejony z forum nie zamieni się w działający kod strony — jeśli w poście ktoś wpisał surowy znacznik HTML, po konwersji zobaczymy go jako widoczny tekst, a nie jako element. To zabezpieczenie przed wstrzyknięciem kodu, ponieważ BBCode z założenia jest językiem tekstowym, a nie wykonywalnym.
Trzeci element mechanizmu to dopasowywanie par tagów. Parser prowadzi stos otwartych znaczników i tag zamykający przypisuje do ostatnio otwartego tagu tego samego typu, co daje poprawną strukturę przy zagnieżdżeniach w rodzaju [quote][b]tekst[/b][/quote]. Jeśli tag zamykający nie ma pary albo para jest niespójna, fragment pozostaje zwykłym tekstem — konwerter nie naprawia składni na siłę. Istotna jest też kolejność: najpierw przetwarzane są tagi wewnętrzne, potem zewnętrzne, a tagi z parametrem wymagają dodatkowego kroku — odczytania wartości i przeniesienia jej do atrybutu HTML.
Przykład konwersji krok po kroku
- Wejściowy fragment posta: [quote=Anna][b]Witaj[/b] i [i]dzień dobry[/i][/quote], a w kolejnej linii [url=https://example.com]Link[/url].
- Escapowanie: znaki specjalne HTML w tekście użytkownika zostają zamienione na encje, więc gdyby w poście był wpisany surowy znacznik, stałby się widocznym tekstem, a nie elementem strony.
- Rozpoznanie tagów z parametrem: [quote=Anna] to otwarcie cytatu z autorem, [url=https://example.com] to odnośnik z własną etykietą. Parametr jest odczytywany i przenoszony do atrybutu — autor do podpisu cytatu, adres do atrybutu odnośnika.
- Zamiana tagów bez parametru: [b] na strong, [i] na em. To najprostsze podstawienia, wykonywane w pierwszej kolejności.
- Domknięcie struktury: [/url] zamyka ostatnio otwarty odnośnik, [/quote] zamyka cytat dopiero po wcześniejszym domknięciu tagów wewnętrznych, czyli pogrubienia i kursywy.
- Wynik: blok cytatu z podpisem Anna, w jego treści pogrubione słowo Witaj i pochylone dzień dobry, a poniżej akapit z odnośnikiem o etykiecie Link.
Tabela zamian: tag forum i jego odpowiednik
| BBCode | Odpowiednik HTML | Uwagi |
|---|---|---|
| [b]tekst[/b] | <strong> | pogrubienie, tag bez parametru |
| [i]tekst[/i] | <em> | kursywa, tag bez parametru |
| [color=red]tekst[/color] | kolor tekstu | parametr nazwany albo w zapisie szesnastkowym |
| [size=14]tekst[/size] | rozmiar tekstu | rozmiar przekazany w parametrze |
| [url=https://example.com]Tekst[/url] | odnośnik | adres trafia do atrybutu, etykieta do treści |
| [img width=200]adres[/img] | obraz | parametr szerokości staje się atrybutem elementu |
| [quote=Jan]tekst[/quote] | cytat z podpisem | autor wyświetlany jako podpis nad treścią |
| [code=php]kod[/code] | blok kodu | zawartość traktowana dosłownie, bez parsowania tagów w środku |
Praktyczne wskazówki przy przenoszeniu treści z forum
- Wklejaj czysty BBCode — usuń z materiału wejściowego znaczniki HTML, bo po escapowaniu i tak zostaną pokazane jako tekst i zaśmiecą wynik. Mieszanie dwóch składni w jednym fragmencie to najczęstsza przyczyna błędów przy imporcie postów.
- Pilnuj zagnieżdżeń — struktury typu cytat w cytacie albo lista w cytacie działają tylko wtedy, gdy tagi otwierające i zamykające tworzą poprawne pary. Przed konwersją warto przejrzeć fragment i domknąć brakujące znaczniki.
- Traktuj kod jako treść dosłowną — w tagu [code] znajdują się często nawiasy kwadratowe, które wyglądają jak tagi. Taki blok powinien być wyłączony z parsowania, inaczej listing kodu rozsypie się po konwersji.
- Zachowaj podziały linii — BBCode z forów opiera się na akapitach rozdzielonych pustą linią. Jeśli wynik ma być publikowany w edytorze, sprawdź, czy pojedyncze przejścia do nowej linii nie zlewają się w jeden akapit.
- Sprawdź wynik na krótkim fragmencie — przekonwertuj najpierw jeden reprezentatywny post z pogrubieniem, odnośnikiem i cytatem. Dopiero gdy wynik wygląda poprawnie, przenoś całą partię materiału.
Czego konwersja nie uwzględnia
- Niestandardowe tagi forów — phpBB, vBulletin, IPB i XenForo mają wspólny rdzeń składni, ale dokładają własne rozszerzenia. Tagi specyficzne dla konkretnego silnika mogą pozostać w wyniku jako zwykły tekst.
- Niedomknięte pary tagów — jeśli w materiale brakuje tagu zamykającego, fragment nie zostanie zamieniony. Konwerter nie zgaduje intencji autora i nie dorysowuje brakujących znaczników.
- Atrybuty nietypowe — wartość parametru zawierająca spację, cudzysłów albo dodatkowe znaki może zostać odczytana błędnie, zwłaszcza w tagach linków i obrazów.
- Emotikony i skróty — zamiana kodu emotikony na obrazek oraz automatyczne linkowanie adresów to osobne funkcje silnika forum. Sama konwersja tagów ich nie obejmuje.
- Walidacja kodu wynikowego — narzędzie zamienia znaczniki, ale nie sprawdza, czy powstały HTML jest poprawny semantycznie ani czy nadaje się do publikacji w danym CMS.
Najczęstsze pytania
Dlaczego fora używają BBCode a nie HTML?
Bezpieczeństwo: HTML wklejony przez użytkownika = ryzyko XSS (Cross-Site Scripting). BBCode jest parsowany serwer-side do bezpiecznego HTML z whitelist tagów. Prostota: BBCode jest łatwiejszy do nauczenia niż HTML. Historia: BBCode wprowadził phpBB około 2000 r.
Jak bezpiecznie konwertować BBCode na HTML?
Sanitizacja: po konwersji użyj DOMPurify (JS) lub html_special_chars + whitelist (PHP). Nigdy nie wstawiaj surowego HTML od użytkownika. Whitelist dozwolonych tagów HTML: , , , (z ograniczeniami),
,
. Usuń onclick, onerror, style z javascript:.
Jak BBCode obsługuje zagnieżdżone cytowania?
[quote][quote=Jan]...[/quote] Odpowiedź[/quote] – wiele forów obsługuje zagnieżdżone cytowania do N poziomów. HTML:
. Wygląd: wcięcia lub kolorowe obramowanie (CSS).......
Czy BBCode jest używany poza forami?
MediaWiki (Wikipedia): własna składnia (podobna do BBCode). Reddit: Markdown. Stack Overflow: Markdown + LaTeX. Discord: uproszczony Markdown. Slack: Markdown. BBCode jest dziś raczej legacy – nowe platformy preferują Markdown.
Jak migrować treści forum z BBCode do Markdown?
BBCode → HTML → Markdown (2-krokowa konwersja). Narzędzie wykonuje krok 1. Krok 2: użyj "Konwerter HTML na Markdown". Lub bezpośrednio: [b] → **, [i] → *, [url=X]Y[/url] → [Y](X), [code] → ``` (backticks). Python: bbcode + markdownify.
Czy konwerter BBCode na HTML obsługuje tagi z parametrami, np. [url=https://example.com]?
Tak. Tagi z parametrem są rozpoznawane, a wartość po znaku równości trafia do odpowiedniego atrybutu HTML. Dotyczy to między innymi odnośników, obrazów, koloru, rozmiaru czcionki i cytatów z podpisem autora.
Dlaczego część tagów została w wyniku jako zwykły tekst?
Najczęściej dlatego, że tag nie ma pary zamykającej albo należy do rozszerzenia konkretnego silnika forum, którego konwerter nie zna. Nierozpoznane konstrukcje są celowo zostawiane bez zmian, żeby nie zniekształcić treści.
Co się dzieje z surowym kodem HTML wklejonym w treść posta?
Znaki specjalne HTML zostają zamienione na encje, więc taki fragment jest wyświetlany jako widoczny tekst, a nie wykonywany jako element strony. To zamierzone zachowanie chroniące przed wstrzyknięciem kodu.
Czy BBCode z phpBB, vBulletin i XenForo działa tak samo?
Podstawowe tagi, takie jak pogrubienie, kursywa, odnośnik czy cytat, są wspólne dla tych silników. Różnice pojawiają się przy tagach dodatkowych, instalowanych przez rozszerzenia i modyfikacje konkretnego forum.
Czy zawartość tagu [code] jest parsowana jak reszta tekstu?
Nie powinna być. Blok kodu wymaga traktowania dosłownego, ponieważ znajdują się w nim nawiasy kwadratowe, które wyglądają jak tagi BBCode. Parsowanie takiego bloku prowadzi do rozsypania się listingu po konwersji.
Powiązane narzedzia: konwerter HTML na Markdown, walidator HTML i formater JSON.