Observed in installed Markdown 3.10.2 and markdown-it-py 4.0.0 Python-Markdown markdown/inlinepatterns.py: build_inlinepatterns registers LINE_BREAK_RE with SubstituteTagInlineProcessor, tag br. LINE_BREAK_RE = ' \\n' markdown-it-py markdown_it/renderer.py: RendererHTML.softbreak def softbreak( self, tokens: Sequence[Token], idx: int, options: OptionsDict, env: EnvType ) -> str: return ( ("
\n" if options.xhtmlOut else "
\n") if options.breaks else "\n" )