diff --git a/lib/banzai/filter/inline_math_filter.rb b/lib/banzai/filter/inline_math_filter.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a63116c12ce7fadad0326820ebc8518a991d4181
--- /dev/null
+++ b/lib/banzai/filter/inline_math_filter.rb
@@ -0,0 +1,29 @@
+require 'uri'
+
+module Banzai
+  module Filter
+    # HTML filter that adds class="code math" and removes the dolar sign in $`2+2`$.
+    #
+    class InlineMathFilter < HTML::Pipeline::Filter
+      def call
+        doc.xpath("descendant-or-self::text()[substring(., string-length(.)) = '$']"\
+          "/following-sibling::*[name() = 'code']"\
+          "/following-sibling::text()[starts-with(.,'$')]").each do |el|
+          closing = el
+          code = el.previous
+          code[:class] = 'code math'
+          opening = code.previous
+
+          closing.content = closing.content[1..-1]
+          opening.content = opening.content[0..-2]
+
+          closing
+        end
+
+        puts doc
+
+        doc
+      end
+    end
+  end
+end
diff --git a/lib/banzai/pipeline/gfm_pipeline.rb b/lib/banzai/pipeline/gfm_pipeline.rb
index 5da2d0b008c860ad9c27c49506aabcc05ce2c6b4..2c81cbe56b30768d71d8e50d840c1fd3ec48ec76 100644
--- a/lib/banzai/pipeline/gfm_pipeline.rb
+++ b/lib/banzai/pipeline/gfm_pipeline.rb
@@ -6,6 +6,7 @@ module Banzai
           Filter::SyntaxHighlightFilter,
           Filter::SanitizationFilter,
 
+          Filter::InlineMathFilter,
           Filter::UploadLinkFilter,
           Filter::VideoLinkFilter,
           Filter::ImageLinkFilter,
diff --git a/spec/lib/banzai/filter/inline_math_filter_spec.rb b/spec/lib/banzai/filter/inline_math_filter_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1edec83a6f27a11d2305d0e0f28e3da758a2678f
--- /dev/null
+++ b/spec/lib/banzai/filter/inline_math_filter_spec.rb
@@ -0,0 +1,31 @@
+require 'spec_helper'
+
+describe Banzai::Filter::InlineMathFilter, lib: true do
+  include FilterSpecHelper
+
+  it 'leaves regular inline code unchanged' do
+    doc = filter("<code>2+2</code>")
+    expect(doc.to_s).to eq "<code>2+2</code>"
+  end
+
+  it 'removes surrounding dollar signs and adds class' do
+    doc = filter("$<code>2+2</code>$")
+    expect(doc.to_s).to eq '<code class="code math">2+2</code>'
+  end
+
+  it 'only removes surrounding dollar signs' do
+    doc = filter("test $<code>2+2</code>$ test")
+    expect(doc.to_s).to eq 'test <code class="code math">2+2</code> test'
+  end
+
+  it 'only removes surrounding single dollar sign' do
+    doc = filter("test $$<code>2+2</code>$$ test")
+    expect(doc.to_s).to eq 'test $<code class="code math">2+2</code>$ test'
+  end
+
+  it 'ignores cases with missing dolar sign' do
+    doc = filter("test $<code>2+2</code> test")
+    expect(doc.to_s).to eq 'test $<code>2+2</code> test'
+  end
+
+end