diff --git a/app/build.gradle b/app/build.gradle
index 7f0181db..4e93a793 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
     defaultConfig {
         minSdk 21
         targetSdk 33
-        versionCode 480
-        versionName "3.18.2"
+        versionCode 481
+        versionName "3.19.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
     flavorDimensions "default"
diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json
index 7aaf714c..97b8611d 100644
--- a/app/src/main/assets/release_notes/notes.json
+++ b/app/src/main/assets/release_notes/notes.json
@@ -1,4 +1,9 @@
 [
+  {
+    "version": "3.19.0",
+    "code": "481",
+    "note": "Added:\n- Settings compose: don't send media if there are no description (default: disabled)\n- Settings Timelines: Enable/Disable truncate links\n- Allow to set max link length (20 - 150 chars)\n\nChanged:\n- Align media with text (left margin enabled)\n\nFixed:\n- Media previews remain the same when sharing\n- Edit media description not working\n- Accessibility (larger fonts): profiles/DM\n- Cross replies: Wrong visibility with the selected account\n- Several crashes"
+  },
   {
     "version": "3.18.2",
     "code": "480",
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java
index 426323e4..f9947510 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java
@@ -303,10 +303,15 @@ public class SpannableHelper {
             end = start + newUrl.length();
             url = newUrl;
         }
-        if (url.length() > 30 && (validUrl || url.startsWith("gimini://"))) {
-            newUrl = url.substring(0, 30);
-            newUrl += "…";
-            content.replace(start, end, newUrl);
+        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
+        boolean truncate = sharedpreferences.getBoolean(context.getString(R.string.SET_TRUNCATE_LINKS), true);
+        if (truncate) {
+            int truncateValue = sharedpreferences.getInt(context.getString(R.string.SET_TRUNCATE_LINKS_MAX), 30);
+            if (url.length() > truncateValue && (validUrl || url.startsWith("gimini://"))) {
+                newUrl = url.substring(0, truncateValue);
+                newUrl += "…";
+                content.replace(start, end, newUrl);
+            }
         }
         int matchEnd = validUrl ? start + newUrl.length() : end;
 
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java
index 059494ab..bc6c01f3 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java
@@ -61,6 +61,7 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen
                 preferenceScreen.removePreferenceRecursively("SET_TRANSLATOR_DOMAIN");
             }
         }
+
         SwitchPreferenceCompat SET_DISPLAY_BOOKMARK = findPreference(getString(R.string.SET_DISPLAY_BOOKMARK));
         if (SET_DISPLAY_BOOKMARK != null) {
             boolean checked = sharedpreferences.getBoolean(getString(R.string.SET_DISPLAY_BOOKMARK) + MainActivity.currentUserID + MainActivity.currentInstance, true);
@@ -77,6 +78,7 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen
             boolean checked = sharedpreferences.getBoolean(getString(R.string.SET_PIXELFED_PRESENTATION) + MainActivity.currentUserID + MainActivity.currentInstance, false);
             SET_PIXELFED_PRESENTATION.setChecked(checked);
         }
+
     }
 
     @Override
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 00879430..3bc0e5ce 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1125,6 +1125,9 @@
     SET_EXPAND_MEDIA
     SET_GROUP_REBLOGS
     SET_BOOST_ORIGINAL_DATE
+    SET_TRUNCATE_LINKS
+    SET_TRUNCATE_LINKS_MAX
+
     SET_HIDE_SINGLE_MEDIA_WITH_CARD
     SET_LIVE_TRANSLATE_MULTIPLE
     SET_TRUNCATE_TOOTS_SIZE
@@ -1910,4 +1913,7 @@
 
     The message will not be sent if a description is missing with a media
     There are missing media descriptions
+
+    Truncate links
+    Max chars in links
 
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml
index d17b85ec..80800942 100644
--- a/app/src/main/res/xml/pref_timelines.xml
+++ b/app/src/main/res/xml/pref_timelines.xml
@@ -44,6 +44,23 @@
         app:singleLineTitle="false"
         app:title="@string/boost_original_date" />
 
+    
+
+