diff --git a/datasette/default_column_types.py b/datasette/default_column_types.py
index f90a733e..94fb0823 100644
--- a/datasette/default_column_types.py
+++ b/datasette/default_column_types.py
@@ -5,6 +5,7 @@ import markupsafe
from datasette import hookimpl
from datasette.column_types import ColumnType, SQLiteType
+from datasette.utils import truncate_url
class UrlColumnType(ColumnType):
@@ -15,8 +16,12 @@ class UrlColumnType(ColumnType):
async def render_cell(self, value, column, table, database, datasette, request):
if not value or not isinstance(value, str):
return None
- escaped = markupsafe.escape(value.strip())
- return markupsafe.Markup(f'{escaped}')
+ url = value.strip()
+ escaped = markupsafe.escape(url)
+ truncated = markupsafe.escape(
+ truncate_url(url, datasette.setting("truncate_cells_html"))
+ )
+ return markupsafe.Markup(f'{truncated}')
async def validate(self, value, datasette):
if value is None or value == "":
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 670166bb..9c8e7188 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -107,6 +107,7 @@ The edit interface takes :ref:`custom column types `.
- Fixed a warning about ``gen.throw(*sys.exc_info())``. (:issue:`2776`)
- New default custom column type ``textarea`` for multi-line text content. This is rendered as a ``