Comment Snob

Due to the upcoming deprecation of XUL-based add-ons, I am stopping development and support for this add-on. E-mail me if you’d to take over development.

Comment Snob is an extension for Google Chrome and Mozilla Firefox that filters out undesirable comments from comment threads on the Web. You can install it in Chrome or install it in Firefox.



It comes with support for YouTube by default, but you can add support for many other sites by installing Comment Snob rules. For each rule that you install, you can choose from the following filtering parameters:

  • All capital letters
  • No capital letters
  • Doesn’t start with a capital letter
  • Excessive punctuation (!!!! ????)
  • Excessive capitalization
  • Profanity
  • Contains any words or phrases that you deem objectionable.

Installing Comment Snob Rules

There are two ways to install a comment snob rule:

  1. Click on a Comment Snob rule link in a webpage. A bar will appear at the top of your browser allowing you to install the rule. (Try clicking this link: Comment Snob Rule for Mashable)

  2. Or, open the Comment Snob options and write your own Comment Snob rule.

Featured Comment Snob Rules

Writing a Comment Snob Rule

Are you familiar with HTML and jQuery? Then you can write Comment Snob rules for any website you want.

Components of a Rule

A Comment Snob rule is a JSON object that tells Comment Snob how to find comments on a website and where to place the “Show/Hide” toggle for each comment. These are the properties that each rule should (or can) have; all selectors should be written for consumption by jQuery:

Attribute Required Description
id Yes A string that should be unique to your rule. This is used to make sure that the same rule is not installed multiple times.
label Yes A string that describes your rule to a user. It will usually be the name of the website that it filters.
url Yes A regular expression (encoded in a string) that describes the URLs for which your rule should be run.
allCommentsSelector Yes A selector that selects the smallest possible container that contains all of the comments for the page.
commentContainerSelector Yes A selector that selects the largest possible container that contains only a single comment, using allCommentsSelector as a starting point.
commentTextSelector Optional A selector that selects the smallest possible container that contains all of the text for a comment, using commentContainerSelector. If not specified, defaults to commentContainerSelector.
commentHideSelector Optional A selector that selects any nodes that should be hidden when a comment is filtered, using commentContainerSelector as a starting point. If not specified, commentTextSelector will be used.
statusElementTag Optional The HTML tag name that should be used to hold the “Show/Hide” toggle and the reason for filtering. If not specified, defaults to “span”.
statusContainerSelector Optional A selector that selects the element that will be used as a point of reference for where the “show/hide” toggle and filtering reason is placed for each comment. If not specified, defaults to commentContainerSelector.
statusPlacement Optional One of “prepend”, “append”, “before”, or “after”; used along with statusContainerSelector to insert the filtering status into each filtered comment. Defaults to “prepend”.
statusElementAttributes Optional A hash containing name/value pairs for attributes that can be added to the placeholder element specified by statusElementTag.
ajaxInitiatorSelector Optional A selector that selects any UI elements that might be clicked to trigger loading more comments via AJAX, using allCommentsSelector as a starting point.
dynamic Optional A boolean value (defaults to false) that indicates whether the website’s comments are not included in the main pageload, but are immediately loaded after the page loads. Disqus is the most common example of this.
updateURL Optional A URL where the JSON for this rule can be retrieved (for automatic updates).
author Optional Your name, email address, or website.
description Optional A text description of your rule, only recommended if the label doesn’t fully describe the functionality.

The simplest possible rule might look like this:

	"id": "",
	"label": "",
	"url": "^http://example\\.com/",
	"allCommentsSelector": "#comments",
	"commentContainerSelector": ".comment"

Rule Discovery

To let users install your rule, just link to a file that ends in .snob and contains only the JSON, or make your link in this format:

	data:text/snob+json;base64,[base64-encoded JSON here]


E-mail me at

88 thoughts on “Comment Snob

  1. Is there any way to remove those “trackback” type of comments?

    For example:
    Lynn Fox shared this via Google+1 year ago


    Lynn Fox via Google+1 year ago

  2. MixavitaPlus says:

    I love the idea of this program, however, I can’t get keywords working. The comments will stay there whether or not they include the word i put there.
    I kinda downloaded this program for just that feature, ’cause some channels I have subscribed have their regular commenters who really annoy me. They rarely have any content in their messages, and often don’t even make any sense. And they take space from the actual rational opinions. But since they don’t make any spelling errors, they don’t fit any of the existing categories.

  3. MixavitaPlus says:

    Actually, nothing else than block all comments work on youtube, which could have been done with the regular adblock. Firefox is up to date and CS is at version 5.0a1.

  4. Is it possible to use this to filter out videos posted by a specific person (ideally I suppose being able to filter out videos from a list of people would be better, but for the videos I watch there is one particular person who posts a lot of spam videos that have names entirely unrelated to the video). Thank you.

  5. Hi Chris,

    Have tried using it for the following site with this rule and no joy ? what am i doing wrong please
    “id”: “”,
    “label”: “”,
    “url”: “^https?://www\\.thejournal\\.ie/”,
    “allCommentsSelector”: “#Parent-comment-3777480 > li”,
    “commentContainerSelector”: “.text”

  6. Hey Chris,

    Got it working a bit but it will not hide the comments etc

    “id”: “”,
    “label”: “”,
    “url”: “^https?://www\\.thejournal\\.ie/”,
    “allCommentsSelector”: “ul.commentList.border”,
    “commentContainerSelector”: “div.text”,
    “StatusElementTag”: “div”,
    “statusElementAttributes”: {
    “class”: “text”,
    “style”: ” color : #996600;”,
    “comment-snob-processed”: “true”
    “statusPlacement”: “after”

    if you get a chance to have a look :-)

    thanks in advance


Leave a Reply

Your email address will not be published.