diff --git a/application/tools/src/main/java/org/videolan/tools/Settings.kt b/application/tools/src/main/java/org/videolan/tools/Settings.kt
index 2950063ef3ee05cbfea88389a67191671921d4ac..32c199dedeaecf74ea459a39b973e1950fcfad1f 100644
--- a/application/tools/src/main/java/org/videolan/tools/Settings.kt
+++ b/application/tools/src/main/java/org/videolan/tools/Settings.kt
@@ -28,6 +28,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ init(it.applicat
     var videoDoubleTapJumpDelay = 10
     var audioJumpDelay = 10
     var audioLongJumpDelay = 20
+    var audioShowTrackNumbers = MutableLiveData(false)
     var showHiddenFiles = false
     var showTrackNumber = true
     var tvFoldersFirst = true
@@ -54,6 +55,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ init(it.applicat
         videoDoubleTapJumpDelay = prefs.getInt(KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY, 10)
         audioJumpDelay = prefs.getInt(KEY_AUDIO_JUMP_DELAY, 10)
         audioLongJumpDelay = prefs.getInt(KEY_AUDIO_LONG_JUMP_DELAY, 20)
+        audioShowTrackNumbers.postValue(prefs.getBoolean(KEY_AUDIO_SHOW_TRACK_NUMBERS, false))
         showHiddenFiles = prefs.getBoolean(BROWSER_SHOW_HIDDEN_FILES, !tvUI)
         showTrackNumber = prefs.getBoolean(ALBUMS_SHOW_TRACK_NUMBER, true)
         tvFoldersFirst = prefs.getBoolean(TV_FOLDERS_FIRST, true)
@@ -115,6 +117,7 @@ const val KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY = "video_double_tap_jump_delay"
 const val KEY_AUDIO_JUMP_DELAY = "audio_jump_delay"
 const val KEY_AUDIO_LONG_JUMP_DELAY = "audio_long_jump_delay"
 const val KEY_AUDIO_FORCE_SHUFFLE = "audio_force_shuffle"
+const val KEY_AUDIO_SHOW_TRACK_NUMBERS = "audio_show_track_numbers"
 
 
 // AudioPlayer
diff --git a/application/vlc-android/res/layout/playlist_item.xml b/application/vlc-android/res/layout/playlist_item.xml
index 968b8af2ca4e2c7a7aebfe5339f0b42d4bf5ef75..4ce37114e20ec80e45c1783b79681f291b17f5e1 100644
--- a/application/vlc-android/res/layout/playlist_item.xml
+++ b/application/vlc-android/res/layout/playlist_item.xml
@@ -35,6 +35,10 @@
                 name="stopAfterThis"
                 type="java.lang.Boolean" />
 
+        <variable
+                name="showTrackNumbers"
+                type="java.lang.Boolean" />
+
         <variable
                 name="masked"
                 type="java.lang.Boolean" />
@@ -98,6 +102,22 @@
                 app:layout_constraintStart_toStartOf="@+id/coverImage"
                 app:layout_constraintTop_toTopOf="@+id/coverImage" />
 
+        <TextView
+                android:id="@+id/track_number"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="8dp"
+                app:trackNumber="@{media}"
+                android:minWidth="20dp"
+                android:gravity="end"
+                android:textColor="?attr/font_default"
+                android:textSize="14sp"
+                android:visibility="@{!showTrackNumbers  ? View.GONE : View.VISIBLE}"
+                app:layout_constraintEnd_toStartOf="@+id/audio_item_title"
+                app:layout_constraintStart_toEndOf="@+id/coverImage"
+                app:layout_constraintBaseline_toBaselineOf="@+id/audio_item_title"
+                tools:text="1." />
+
         <TextView
                 android:id="@+id/audio_item_title"
                 android:layout_width="0dp"
@@ -119,7 +139,7 @@
                 app:layout_constraintBottom_toTopOf="@+id/audio_item_subtitle"
                 app:layout_constraintEnd_toEndOf="@+id/selector"
                 app:layout_constraintHorizontal_bias="0.5"
-                app:layout_constraintStart_toEndOf="@+id/coverImage"
+                app:layout_constraintStart_toEndOf="@+id/track_number"
                 app:layout_constraintTop_toTopOf="parent"
                 app:layout_constraintVertical_chainStyle="packed"
                 tools:text="Symphonie n°1" />
diff --git a/application/vlc-android/res/xml/preferences_audio_controls.xml b/application/vlc-android/res/xml/preferences_audio_controls.xml
index 83602c22d4b8d1581ef58f4c829cd103a547cc28..4b559ca0605a23eb795fcaa6b6d258fb2ddf6ee1 100644
--- a/application/vlc-android/res/xml/preferences_audio_controls.xml
+++ b/application/vlc-android/res/xml/preferences_audio_controls.xml
@@ -5,12 +5,8 @@
         android:key="video_category"
         android:title="@string/video_prefs_category">
 
-    <CheckBoxPreference
-            app:singleLineTitle="false"
-            android:defaultValue="true"
-            android:key="blurred_cover_background"
-            android:summary="@string/blurred_cover_background_summary"
-            android:title="@string/blurred_cover_background_title"/>
+    <PreferenceCategory android:title="@string/controls_prefs_category"
+            app:iconSpaceReserved="false">
 
     <org.videolan.vlc.gui.view.NumberPickerPreference
             app:key="audio_jump_delay"
@@ -31,6 +27,26 @@
             android:summary="@string/force_shuffle_summary"
             android:title="@string/force_shuffle_title"/>
 
+    </PreferenceCategory>
+
+
+    <PreferenceCategory android:title="@string/interface_prefs_screen"
+            app:iconSpaceReserved="false">
+
+        <CheckBoxPreference
+                app:singleLineTitle="false"
+                android:defaultValue="true"
+                android:key="blurred_cover_background"
+                android:summary="@string/blurred_cover_background_summary"
+                android:title="@string/blurred_cover_background_title"/>
+
+        <CheckBoxPreference
+                app:singleLineTitle="false"
+                android:defaultValue="false"
+                android:key="audio_show_track_numbers"
+                android:title="@string/albums_show_track_numbers"/>
+    </PreferenceCategory>
+
 
 
 </androidx.preference.PreferenceScreen>
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
index 4fc55bb942022c8b3139f112e3a1e85781aee610..678ca0aa9b01cb5cdd2e2040ec4418e0c083776f 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
@@ -31,7 +31,6 @@ import android.support.v4.media.session.PlaybackStateCompat
 import android.text.Editable
 import android.text.TextWatcher
 import android.text.format.DateFormat
-import android.util.Log
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
@@ -230,6 +229,12 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
 
             playlistModel.service?.manageAbRepeatStep(binding.abRepeatReset, binding.abRepeatStop, binding.abRepeatContainer, abRepeatAddMarker)
         }
+        Settings.audioShowTrackNumbers.observe(viewLifecycleOwner) { showTrackNumbers ->
+            playlistAdapter.showTrackNumbers = showTrackNumbers
+            (binding.songsList.layoutManager as? LinearLayoutManager)?.let {
+                playlistAdapter.notifyItemRangeChanged(it.findFirstVisibleItemPosition(), it.findLastCompletelyVisibleItemPosition())
+            }
+        }
 
         abRepeatAddMarker.setOnClickListener {
             playlistModel.service?.playlistManager?.setABRepeatValue(playlistModel.service?.playlistManager?.getCurrentMedia(), binding.timeline.progress.toLong())
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
index bc1bd97a55512e78aad24afe310478cf33582a6c..532ed5fac532901a6d1d68fed49678b75d1f401b 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
@@ -71,6 +71,7 @@ private const val ACTION_MOVED = "action_moved"
 
 class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrapper, PlaylistAdapter.ViewHolder>(), SwipeDragHelperAdapter, SchedulerCallback {
 
+    var showTrackNumbers: Boolean = false
     private var defaultCoverVideo: BitmapDrawable
     private var defaultCoverAudio: BitmapDrawable
     private var model: PlaylistModel? = null
@@ -130,6 +131,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrappe
         holder.binding.scaleType = ImageView.ScaleType.CENTER_CROP
         holder.binding.stopAfter.visibility = if (stopAfter == position) View.VISIBLE else View.GONE
         holder.binding.stopAfterThis = (position == stopAfter)
+        holder.binding.showTrackNumbers = showTrackNumbers
         if (currentIndex == position) {
             if (model?.playing != false) holder.binding.playing.start() else holder.binding.playing.stop()
             holder.binding.playing.visibility = View.VISIBLE
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
index 33b131ab69e25a64a905bc68146d1f18072b2b98..8f47f41f7270db1ff66f53a4925fcdc9d04f4d13 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
@@ -108,6 +108,7 @@ import org.videolan.vlc.util.LifecycleAwareScheduler
 import org.videolan.vlc.util.SchedulerCallback
 import org.videolan.vlc.util.ThumbnailsProvider
 import org.videolan.vlc.util.openLinkIfPossible
+import org.videolan.vlc.util.trackNumberText
 import java.security.SecureRandom
 import java.util.concurrent.TimeUnit
 import kotlin.math.min
@@ -975,6 +976,11 @@ fun selectedElevation(v: View, isSelected: Boolean?) {
     }
 }
 
+@BindingAdapter("trackNumber")
+fun trackNumber(v: View, media: MediaWrapper) {
+    (v as? TextView)?.text = media.trackNumberText()
+}
+
 fun BaseActivity.applyTheme() {
     forcedTheme()?.let {
         setTheme(it)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudioControls.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudioControls.kt
index 6dd989c0773e33d62fa0ec96e50613753ce3f994..33b1d0f114dadd68adc77622b61c6aea48947b7a 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudioControls.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudioControls.kt
@@ -25,6 +25,7 @@ package org.videolan.vlc.gui.preferences
 import android.content.SharedPreferences
 import org.videolan.tools.KEY_AUDIO_JUMP_DELAY
 import org.videolan.tools.KEY_AUDIO_LONG_JUMP_DELAY
+import org.videolan.tools.KEY_AUDIO_SHOW_TRACK_NUMBERS
 import org.videolan.tools.Settings
 import org.videolan.vlc.R
 import org.videolan.vlc.gui.video.VideoPlayerActivity
@@ -56,6 +57,9 @@ class PreferencesAudioControls : BasePreferenceFragment(), SharedPreferences.OnS
             KEY_AUDIO_LONG_JUMP_DELAY -> {
                 Settings.audioLongJumpDelay = sharedPreferences.getInt(KEY_AUDIO_LONG_JUMP_DELAY, 20)
             }
+            KEY_AUDIO_SHOW_TRACK_NUMBERS -> {
+                Settings.audioShowTrackNumbers.postValue(sharedPreferences.getBoolean(KEY_AUDIO_SHOW_TRACK_NUMBERS, false))
+            }
         }
         Settings.onAudioControlsChanged()
     }
diff --git a/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt b/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
index ffc6072341a043d89e868895954c15b83fa09a34..d6e5da05c083decc49590ef6f626722cbae7b35c 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
@@ -157,6 +157,7 @@ fun FragmentActivity.share(medias: List<MediaWrapper>) = lifecycleScope.launch {
 
 fun MediaWrapper?.isMedia() = this != null && (type == MediaWrapper.TYPE_AUDIO || type == MediaWrapper.TYPE_VIDEO)
 fun MediaWrapper?.isBrowserMedia() = this != null && (isMedia() || type == MediaWrapper.TYPE_DIR || type == MediaWrapper.TYPE_PLAYLIST)
+fun MediaWrapper.trackNumberText() = if (trackNumber > 0) "$trackNumber." else ""
 
 fun Context.getAppSystemService(name: String) = applicationContext.getSystemService(name)!!