Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 158 Stack Exchange communities.

What is meta?
Here's how it works:
  1. Any Stack Exchange user can ask a question
  2. The community provides support, votes on ideas, and reports bugs
  3. Your voice helps shape the way Stack Exchange operates

Whatever specified in question title ends up in the URL of the post.

As a result, if a question contains strong language in its title, there's a strong chance it won't be accessible by people behind Web filtering programs that block pages by looking at the URL.

Example (original revision):

Unreasonable Editing Practices


I'm not proposing censorship of the title. I don't care whether the title is offensive or not. The issue is some idiot string matching programs that can be circumvented just by stripping a bunch of blacklisted words off the slug. Removing those, even if they were not offensive in that context, wouldn't harm anything.

share|improve this question
I wonder if that was a problem for the hyphen site before they got their hyphen... – balpha Aug 22 '09 at 19:40
You're aware that there's nothing vulgar about using the term "anal" to mean "overly attentive to details," right? – Kip Aug 22 '09 at 20:45
@Kip: The problem here is that at lot of filtering programs look for specific keywords (of which 'anal' is most certainly one) and those get weighted more heavily than their context or other (possibly more contextually appropriate) definitions. Yes, 'anal' in this context was meant to mean 'overly attentive to details' but that's not how a filtering algorithm is going to see it. – Scott Dorman Aug 22 '09 at 20:51
@Kip: Read the "Clarification." – xmm0 Aug 22 '09 at 21:00
OK. I see where you're going with this, and it is not stupid. But when people write "this link" links in SOFU, I hover over the link to read the title to decide if I want to click. The more mangled the slug, the less useful this is. – dmckee Aug 22 '09 at 21:07
Kip: LOL! :) – xmm0 Aug 22 '09 at 21:21
@balpha: I think it's less of a problem for the hyphen site since the word "sex" doesn't fall on a word boundary. "expert-sex-change" has issues. – xmm0 Aug 22 '09 at 21:32
"The worst way for a president to go is buttbuttination." - – Jarrod Dixon Aug 22 '09 at 23:02
buttbuttins creed is a nice game though :) – xmm0 Aug 22 '09 at 23:23
What use is it to remove them from the title but to leave them in the post? (Because some blocking software will check more than just the URL.) Besides, who is going to decide what is vulgar and what is not? Words like Kut and Lul are vulgar in the Dutch language but in English, they're meaningless. There's always a risk of an URL containing something that someone considers offensive. – Wim ten Brink Dec 20 '09 at 16:42
Workshop Alex: I guess I was angry about the filtered question when I posted this suggestion. Soon after, I realized it doesn't help much. I'm not a proponent of this suggestion. Voted to close as no longer relevant. – xmm0 Dec 20 '09 at 18:06
up vote 4 down vote accepted

Very hard to prevent automatically. User flagging or edits seems to be solution, and that is in place.

In light of Mehrdad's clarification, I am not totally against the idea, though I still think that the underling problem should be fixed by the community.

share|improve this answer
Why it's hard to implement automatically? You just need a list of blacklist in an array and have the code snippet which generates the URL (I assume using a Regex) by seeing the title to strip those words off. – xmm0 Aug 22 '09 at 19:33
Of course, a blacklist immediately becomes either a quest to out-vulgar the list, or the Scunthorpe problem. – Marc Gravell Aug 22 '09 at 19:57
@Marc: I don't see why anyone would care about not including a word in a URL. I don't know what "Scunthorpe problem" is. Please explain. – xmm0 Aug 22 '09 at 21:23
The Scunthorpe problem is when your filter matches substrings and generates false positives. ::grumbles about not being able to format in the middle of the word:: – dmckee Aug 22 '09 at 21:27
dmckee: Thanks for clarification ;) I guessed it has to be something like that but not being good at English, I couldn't be sure about it. Well, we could filter stuff falling on word boundaries. – xmm0 Aug 22 '09 at 21:29
S__cunt__horpe is an English town. It's often picked up by mindless filtering software. – TRiG is Timothy Richard Green May 18 '10 at 15:47

This particular sample has already been fixed, and the moderators explicitly check for and fix these when they occur. I doubt we will be able to stop users from posting them in the first place thought. Flag them and a moderator will attend, if you don't have edit rights yourself.

share|improve this answer

I don't think it's needed. if a url is blocked you can always visit:

which I assume won't be filtered.

share|improve this answer
Yeah, of course. That's how I commented on the post :) – xmm0 Aug 22 '09 at 20:30
Which would almost imply that the title of the post shouldn't be part of the URL at all. – Scott Dorman Aug 22 '09 at 20:55
Scott: It's there for SEO. Just removing the word "anal" would fix the issue. – xmm0 Aug 22 '09 at 20:58
@Mehrdad: Good point about SEO. Wasn't thinking about that at all. – Scott Dorman Aug 22 '09 at 21:14
So we include the word "anal" for SEO purposes? – Andrew Grimm Jan 21 '11 at 12:49
Have you used the internet? It's the best word for SEO purposes! But yes, the slug at the end is primarily for SEO purposes (and it makes for a prettier and clearer URL. Is /16565 word appropriate? I don't know. Is /16565/dont-include-vulgar-words-in-the-url/ work appropriate? Yes) – Mattisdada Apr 27 '15 at 11:40

Which words are vulgar is highly context -- culture and personality -- dependent. Any automated system is bound to either be too restrictive or not restrictive enough depending on your personal context. Perhaps we can agree on some words, but I doubt there would be enough of them to actually handle a significant portion of the existing cases where this happens. I prefer to let the mods deal with it.

Also, we already have the offensive flagging option which allows the individual user to use their own judgement in the context of the question.

For example:

Offensive: "why don't you just jam it up your _ _ _ _"

Not offensive: "I'm working on software to control a PET scanner that will be used to detect cancer on or near the anus"

share|improve this answer
tvanfosson: the issue is not "offensiveness" of the title at all. Removing a couple words from URL slug doesn't make any harm even if was not offensive in that context. – xmm0 Aug 22 '09 at 19:43
The point in illustrating offensiveness was to show how it's possible to use judgement in deciding whether to flag offensive or not even when the same word is used. As for the URL, the problem is that there isn't really a way for us to agree on which words to ban. – tvanfosson Aug 22 '09 at 19:48
tvanfosson: I understand. However, since the blocking programs are also "automated" and some just do a string.Contains it's not hard to build up a list of words that might be searched for. Since we're not actually removing anything from post body, no harm is done to anybody and there wouldn't be an agreement issue. – xmm0 Aug 22 '09 at 19:51

I don't think this is needed in the base code. If you want it, here's some Greasemonkey hotness:

// ==UserScript==
// @name           remove vulgar words
// @namespace      stackoverflow
// @description    Removes "vulgar" words from SO URLs so that some questions are not blocked by filtering
// @include*
// @include*
// @include*
// @include*
// ==/UserScript==

(function() {

  //the words you want to block
  var vulgarRegex = new RegExp("anal|turd|boob", "g");

  var a_tags = document.getElementsByTagName("a");
  for(var i = 0; i < a_tags.length; i++)
    a_tags[i].href = a_tags[i].href.replace(regex, "");

  var form_tags = document.getElementsByTagName("form");
  for(var i = 0; i < form_tags.length; i++)
    form_tags[i].action = form_tags[i].action.replace(regex, "");
share|improve this answer
The problem is at layer 5, not layer 7. Furthermore, Firefox would get the real content, filter it, and then the grasemonkey script would kick in. I don't think this solves the problem. – perbert Aug 22 '09 at 21:21
not sure what layers 5 and 7 are, but the problem (as stated) is that he clicks a link to, and his content is blocked, based on the url. i'm assuming that link is internal (say, from the "recent questions" page). in that case, this script would fix the problem because the link would now point to before he clicked it. now, if the links are external (say, from an RSS reader, or from some other site), then yeah, this wouldn't help. but i doubt this gets implemented by the team so i'm offering the script as a workaround. – Kip Aug 23 '09 at 3:17
He is referring to OSI (network) layers. 5 is session and 7 is application. Many internet filters also looks at the content, making the point of using Greasemonkey null in most cases.... – Mattisdada Apr 27 '15 at 11:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .