diff --git a/app/build.gradle b/app/build.gradle
index 5d4b5a8..0d3bcd7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -135,5 +135,6 @@ dependencies {
 
     implementation "androidx.work:work-runtime:2.4.0"
     implementation "androidx.work:work-runtime-ktx:2.4.0"
+    implementation 'jp.wasabeef:glide-transformations:4.0.0'
 
 }
\ No newline at end of file
diff --git a/app/src/acad/res/values/strings.xml b/app/src/acad/res/values/strings.xml
index 873d985..63e9350 100644
--- a/app/src/acad/res/values/strings.xml
+++ b/app/src/acad/res/values/strings.xml
@@ -14,7 +14,7 @@
     set_store_in_history
     set_play_screen_lock_choice
     set_video_in_list_choice
-
+    set_video_sensitive_choice
     Vidéos dans une liste
     Change la mise en page pour afficher les vidéos dans une liste
 
diff --git a/app/src/full/res/values/strings.xml b/app/src/full/res/values/strings.xml
index 5fd6a48..0672486 100644
--- a/app/src/full/res/values/strings.xml
+++ b/app/src/full/res/values/strings.xml
@@ -13,7 +13,7 @@
     set_fullscreen_choice
     set_play_screen_lock_choice
     set_video_in_list_choice
-
+    set_video_sensitive_choice
     Videos in list
     Change the layout for displaying videos in a list
 
diff --git a/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java b/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
index b6a28dc..993eb56 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
@@ -243,6 +243,7 @@ public class MainActivity extends AppCompatActivity {
                             editor.putBoolean(getString(R.string.set_autoplay_choice), userMe.isAutoPlayVideo());
                             editor.putBoolean(getString(R.string.set_store_in_history), userMe.isVideosHistoryEnabled());
                             editor.putBoolean(getString(R.string.set_autoplay_next_video_choice), userMe.isAutoPlayNextVideo());
+                            editor.putString(getString(R.string.set_video_sensitive_choice), userMe.getNsfwPolicy());
                             //Sync languages from server
                             List videoLanguageServer = userMe.getVideoLanguages();
                             if (videoLanguageServer != null) {
diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java
index 670d9bb..0a89718 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java
@@ -134,7 +134,8 @@ public interface PeertubeService {
             @Field("webTorrentEnabled") Boolean webTorrentEnabled,
             @Field("videoLanguages") List videoLanguages,
             @Field("description") String description,
-            @Field("displayName") String displayName
+            @Field("displayName") String displayName,
+            @Field("nsfwPolicy") String nsfwPolicy
             );
 
     @Multipart
diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java
index 3e4c998..588e06e 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java
@@ -495,7 +495,8 @@ public class RetrofitPeertubeAPI {
                 userSettings.isWebTorrentEnabled(),
                 userSettings.getVideoLanguages(),
                 userSettings.getDescription(),
-                userSettings.getDisplayName()
+                userSettings.getDisplayName(),
+                userSettings.getNsfwPolicy()
         );
         Response response = updateUser.execute();
         if (response.isSuccessful()) {
diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/entities/UserSettings.java b/app/src/main/java/app/fedilab/fedilabtube/client/entities/UserSettings.java
index 1c78d87..a6f8272 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/client/entities/UserSettings.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/client/entities/UserSettings.java
@@ -31,6 +31,7 @@ public class UserSettings {
     private Uri avatarfile;
     private String fileName;
     private NotificationSettings notificationSettings;
+    private String nsfwPolicy;
 
     public Boolean isVideosHistoryEnabled() {
         return videosHistoryEnabled;
@@ -131,5 +132,13 @@ public class UserSettings {
     public void setNotificationSettings(NotificationSettings notificationSettings) {
         this.notificationSettings = notificationSettings;
     }
+
+    public String getNsfwPolicy() {
+        return nsfwPolicy;
+    }
+
+    public void setNsfwPolicy(String nsfwPolicy) {
+        this.nsfwPolicy = nsfwPolicy;
+    }
 }
 
diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java
index a27f188..d2c72a8 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java
@@ -128,12 +128,13 @@ public class PeertubeAdapter extends RecyclerView.Adapter. */
 
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.target.CustomTarget;
+import com.bumptech.glide.request.transition.Transition;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import app.fedilab.fedilabtube.MainActivity;
+import app.fedilab.fedilabtube.R;
+import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
+import app.fedilab.fedilabtube.client.entities.Error;
+import app.fedilab.fedilabtube.client.entities.UserSettings;
+import app.fedilab.fedilabtube.helper.Helper;
+import app.fedilab.fedilabtube.helper.ThemeHelper;
+import es.dmoral.toasty.Toasty;
+
+import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
+import static app.fedilab.fedilabtube.MainActivity.userMe;
+
 public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
 
     @Override
@@ -131,6 +130,26 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
                     ThemeHelper.switchTo(choice);
                 }
             }
+            if (key.compareTo(getString(R.string.set_video_sensitive_choice)) == 0) {
+                ListPreference set_video_sensitive_choice = findPreference(getString(R.string.set_video_sensitive_choice));
+                if (set_video_sensitive_choice != null) {
+                    editor.putString(getString(R.string.set_video_sensitive_choice), set_video_sensitive_choice.getValue());
+                    editor.apply();
+                    if(Helper.isLoggedIn(getActivity())) {
+                        new Thread(() -> {
+                            UserSettings userSettings = new UserSettings();
+                            userSettings.setNsfwPolicy(set_video_sensitive_choice.getValue());
+                            try {
+                                RetrofitPeertubeAPI api = new RetrofitPeertubeAPI(getActivity());
+                                api.updateUser(userSettings);
+                                userMe.setNsfwPolicy(set_video_sensitive_choice.getValue());
+                            } catch (Exception | Error e) {
+                                e.printStackTrace();
+                            }
+                        }).start();
+                    }
+                }
+            }
             if (key.compareTo(getString(R.string.set_video_quality_choice)) == 0) {
                 ListPreference set_video_quality_choice = findPreference(getString(R.string.set_video_quality_choice));
                 if (set_video_quality_choice != null) {
@@ -287,6 +306,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
             set_theme_choice.setValueIndex(currentTheme);
         }
 
+
+
         //****** Video mode *******
         ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice));
         List array = Arrays.asList(getResources().getStringArray(R.array.settings_video_mode));
@@ -387,6 +408,31 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
         if (selection != null) {
             set_video_language_choice.setValues(selection);
         }
+
+        //****** Display sensitive content *******
+        ListPreference set_video_sensitive_choice = findPreference(getString(R.string.set_video_sensitive_choice));
+        List arraySensitive = new ArrayList<>();
+        arraySensitive.add(getString(R.string.do_not_list));
+        arraySensitive.add(getString(R.string.blur));
+        arraySensitive.add(getString(R.string.display));
+        CharSequence[] entriesSensitive = arraySensitive.toArray(new CharSequence[0]);
+        CharSequence[] entryValuesSensitive = new CharSequence[3];
+        String currentSensitive = sharedpref.getString(getString(R.string.set_video_sensitive_choice), Helper.BLUR);
+        entryValuesSensitive[0] = Helper.DO_NOT_LIST.toLowerCase();
+        entryValuesSensitive[1] = Helper.BLUR.toLowerCase();
+        entryValuesSensitive[2] = Helper.DISPLAY.toLowerCase();
+        int currentSensitivePosition = 0;
+        for(CharSequence val : entryValuesSensitive) {
+            if(val.equals(currentSensitive)) {
+                break;
+            }
+            currentSensitivePosition++;
+        }
+        if (set_video_sensitive_choice != null) {
+            set_video_sensitive_choice.setEntries(entriesSensitive);
+            set_video_sensitive_choice.setEntryValues(entryValuesSensitive);
+            set_video_sensitive_choice.setValueIndex(currentSensitivePosition);
+        }
     }
 
 }
diff --git a/app/src/main/java/app/fedilab/fedilabtube/helper/Helper.java b/app/src/main/java/app/fedilab/fedilabtube/helper/Helper.java
index 5fefc08..6b60653 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/helper/Helper.java
@@ -26,6 +26,7 @@ import android.content.res.Resources;
 import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Environment;
@@ -45,6 +46,7 @@ import androidx.appcompat.app.AlertDialog;
 import androidx.core.content.ContextCompat;
 
 import com.bumptech.glide.Glide;
+import com.bumptech.glide.RequestBuilder;
 import com.bumptech.glide.load.resource.bitmap.CenterCrop;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
@@ -71,6 +73,7 @@ import app.fedilab.fedilabtube.sqlite.Sqlite;
 import app.fedilab.fedilabtube.webview.CustomWebview;
 import app.fedilab.fedilabtube.webview.ProxyHelper;
 import es.dmoral.toasty.Toasty;
+import jp.wasabeef.glide.transformations.BlurTransformation;
 
 import static android.content.Context.DOWNLOAD_SERVICE;
 
@@ -83,6 +86,9 @@ public class Helper {
     public static final int LIGHT_MODE = 0;
     public static final int DARK_MODE = 1;
     public static final int DEFAULT_MODE = 2;
+    public static final String DO_NOT_LIST = "do_not_list";
+    public static final String BLUR = "blur";
+    public static final String DISPLAY = "display";
     public static final String TIMELINE_TYPE = "timeline_type";
     public static final int VIDEO_MODE_NORMAL = 0;
     public static final int VIDEO_MODE_MAGNET = 2;
@@ -439,16 +445,21 @@ public class Helper {
         loadGiF(context, url, imageView, 10);
     }
 
+    public static void loadGiF(final Context context, String instance, String url, final ImageView imageView, boolean blur) {
+        loadGif(context, instance, url, imageView, 10, blur);
+    }
+
     public static void loadGiF(final Context context, String instance, String url, final ImageView imageView) {
-        loadGif(context, instance, url, imageView, 10);
+        loadGif(context, instance, url, imageView, 10, false);
     }
 
     public static void loadGiF(final Context context, String url, final ImageView imageView, int round) {
-        loadGif(context, null, url, imageView, round);
+        loadGif(context, null, url, imageView, round, false);
     }
 
+    @SuppressLint("CheckResult")
     @SuppressWarnings("SameParameterValue")
-    private static void loadGif(final Context context, String instance, String url, final ImageView imageView, int round) {
+    private static void loadGif(final Context context, String instance, String url, final ImageView imageView, int round, boolean blur) {
         if (url == null || url.trim().toLowerCase().compareTo("null") == 0 || url.endsWith("null")) {
             Glide.with(imageView.getContext())
                     .asDrawable()
@@ -464,11 +475,15 @@ public class Helper {
             url = "https://" + url;
         }
         try {
-            Glide.with(imageView.getContext())
+            RequestBuilder requestBuilder = Glide.with(imageView.getContext())
                     .load(url)
-                    .thumbnail(0.1f)
-                    .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(round)))
-                    .into(imageView);
+                    .thumbnail(0.1f);
+                    if( blur ) {
+                        requestBuilder.apply(new RequestOptions().transform(new BlurTransformation(50, 3), new CenterCrop(), new RoundedCorners(10)));
+                    }else {
+                        requestBuilder.apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(round)));
+                    }
+                    requestBuilder.into(imageView);
         } catch (Exception e) {
             try {
                 Glide.with(imageView.getContext())
diff --git a/app/src/main/res/drawable/ic_baseline_blur_on_24.xml b/app/src/main/res/drawable/ic_baseline_blur_on_24.xml
new file mode 100644
index 0000000..121ad7d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_blur_on_24.xml
@@ -0,0 +1,10 @@
+
+  
+
diff --git a/app/src/main/res/xml/main_preferences.xml b/app/src/main/res/xml/main_preferences.xml
index 5095e15..f96ac1d 100644
--- a/app/src/main/res/xml/main_preferences.xml
+++ b/app/src/main/res/xml/main_preferences.xml
@@ -68,6 +68,10 @@
             android:key="@string/set_theme_choice"
             android:summary="@string/set_theme_description"
             android:title="@string/set_theme" />
+