diff --git a/app/liquid_tags/parler_tag.rb b/app/liquid_tags/parler_tag.rb
new file mode 100755
index 000000000..4707efb72
--- /dev/null
+++ b/app/liquid_tags/parler_tag.rb
@@ -0,0 +1,35 @@
+class ParlerTag < LiquidTagBase
+ def initialize(tag_name, id, tokens)
+ super
+ @id = parse_id(id)
+ @width = 710
+ @height = 120
+ end
+
+ def render(_context)
+ html = <<-HTML
+
+ HTML
+ finalize_html(html)
+ end
+
+ private
+
+ def parse_id(input)
+ input_no_space = input.delete(" ")
+ input_no_space = input_no_space.scan(/\bhttps?:\/\/[a-z.\/0-9-]+\b/).first
+ raise StandardError, "Invalid Parler URL" unless valid_id?(input_no_space)
+ input_no_space
+ end
+
+ def valid_id?(id)
+ puts id
+ id =~ /\A(https:\/\/www.parler.io\/audio\/\d{1,11}\/[a-zA-Z0-9]{11,40}.[0-9a-zA-Z-]{11,36}.mp3)\Z/
+ end
+end
+
+Liquid::Template.register_tag("parler", ParlerTag)
diff --git a/spec/liquid_tags/parler_tag_spec.rb b/spec/liquid_tags/parler_tag_spec.rb
new file mode 100644
index 000000000..bc587bc27
--- /dev/null
+++ b/spec/liquid_tags/parler_tag_spec.rb
@@ -0,0 +1,32 @@
+require "rails_helper"
+
+RSpec.describe ParlerTag, type: :liquid_template do
+ describe "#id" do
+ let(:valid_id) { "https://www.parler.io/audio/73240183203/d53cff009eac2ab1bc9dd8821a638823c39cbcea.7dd28611-b7fc-4cf8-9977-b6e3aaf644a1.mp3" }
+
+ let(:invalid_id) { "https://www.google.com" }
+
+ def generate_new_liquid(id)
+ Liquid::Template.register_tag("parler", ParlerTag)
+ Liquid::Template.parse("{% parler #{id} %}")
+ end
+
+ def generate_iframe(_id)
+ ""
+ end
+
+ it "accepts a valid Parler URL" do
+ liquid = generate_new_liquid(valid_id)
+ puts liquid
+ expect(liquid.render).to eq(generate_iframe(valid_id))
+ end
+
+ it "raises an error for invalid IDs" do
+ expect { generate_new_liquid(invalid_id).render }.to raise_error("Invalid Parler URL")
+ end
+ end
+end