diff --git a/app/services/video/provider.rb b/app/services/video/provider.rb
index ea50081e1f9128e3e19b9ec80c4988f90199ea2e..808d9fbd19f6dfc5284ae650fa06a765a8446334 100644
--- a/app/services/video/provider.rb
+++ b/app/services/video/provider.rb
@@ -3,19 +3,14 @@ class Video::Provider
     Vimeo,
     Youtube,
     Dailymotion,
-    Peertube
+    Peertube # Comes last because detection is less reliable
   ]
 
   def self.find(video_url)
-    PROVIDERS.each do |provider|
-      return provider.new(video_url) if url_in_domains?(video_url, provider::DOMAINS)
+    PROVIDERS.each do |provider_class|
+      provider = provider_class.new(video_url)
+      return provider if provider.correct?
     end
     Default.new(video_url)
   end
-
-  protected
-
-  def self.url_in_domains?(url, domains)
-    domains.any? { |domain| url.include? domain }
-  end
 end
diff --git a/app/services/video/provider/default.rb b/app/services/video/provider/default.rb
index 336e8e7aaa27216a09f189c9fc7afee93b43e7cb..3cb5b7f3bac8cd8ce2a3f9c415a580a9c23a60b3 100644
--- a/app/services/video/provider/default.rb
+++ b/app/services/video/provider/default.rb
@@ -1,4 +1,6 @@
 class Video::Provider::Default
+  DOMAINS = []
+  
   attr_reader :video_url
 
   include ActionView::Helpers::TagHelper
@@ -19,6 +21,10 @@ class Video::Provider::Default
     content_tag(:iframe, nil, default_iframe_options.merge(iframe_options))
   end
 
+  def correct?
+    url_in_domains?
+  end
+
   def default_iframe_options
     {
       class: (platform == :default ? nil : platform),
@@ -26,4 +32,12 @@ class Video::Provider::Default
       src: iframe_url
     }
   end
+
+  protected
+
+  def url_in_domains?
+    self.class::DOMAINS.any? do |domain| 
+      video_url.include?(domain) 
+    end
+  end
 end
diff --git a/app/services/video/provider/peertube.rb b/app/services/video/provider/peertube.rb
index 6bcdc3966e467fa6927398d4b121a830230feb77..af3b2ce744b0f0f392d0d60618fda3f52ae0a3cc 100644
--- a/app/services/video/provider/peertube.rb
+++ b/app/services/video/provider/peertube.rb
@@ -1,7 +1,6 @@
 class Video::Provider::Peertube < Video::Provider::Default
-  DOMAINS = ['peertube.fr', 'peertude.my.noesya.coop']
+  DOMAINS = ['peertube.fr']
 
-  # "https://peertube.fr/w/1i848Qvi7Q3ytW2uPY8AxG"
   def identifier
     video_url.split('/w/').last
   end
@@ -14,4 +13,14 @@ class Video::Provider::Peertube < Video::Provider::Default
   def iframe_url
     "#{host}/videos/embed/#{identifier}"
   end
+
+  def correct?
+    url_in_domains? || url_looks_like_peertube?
+  end
+
+  protected
+
+  def url_looks_like_peertube?
+    "/w/".in?(video_url) || "/videos/watch/".in?(video_url)
+  end
 end
diff --git a/test/services/video/provider_test.rb b/test/services/video/provider_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ea10dedad6fec11aa63e244972c6728d2102560e
--- /dev/null
+++ b/test/services/video/provider_test.rb
@@ -0,0 +1,35 @@
+require "test_helper"
+
+class Video::ProviderTest < ActiveSupport::TestCase
+
+  test "provider empty" do
+    provider = Video::Provider.find('')
+    assert_equal Video::Provider::Default, provider.class
+  end
+
+  test "vimeo" do
+    provider = Video::Provider.find('https://vimeo.com/248482251')
+    assert_equal Video::Provider::Vimeo, provider.class
+  end
+
+  test "youtube" do
+    provider = Video::Provider.find('https://www.youtube.com/watch?v=sN8Cq5HEBug')
+    assert_equal Video::Provider::Youtube, provider.class
+    provider = Video::Provider.find('https://youtu.be/sN8Cq5HEBug')
+    assert_equal Video::Provider::Youtube, provider.class
+  end
+
+  test "dailymotion" do
+    provider = Video::Provider.find('https://www.dailymotion.com/video/x35l6b8')
+    assert_equal Video::Provider::Dailymotion, provider.class
+    provider = Video::Provider.find('https://dai.ly/x35l6b8')
+    assert_equal Video::Provider::Dailymotion, provider.class
+  end
+
+  test "peertube" do
+    provider = Video::Provider.find('https://peertube.fr/w/1i848Qvi7Q3ytW2uPY8AxG')
+    assert_equal Video::Provider::Peertube, provider.class
+    provider = Video::Provider.find('https://peertube.my.noesya.coop/w/qBMwAAULLA9oadFgbtdyq8')
+    assert_equal Video::Provider::Peertube, provider.class
+  end
+end
\ No newline at end of file