# Troubleshooting

**Important** : Version 1.0 of the reCAPTCHA API is no longer supported, please upgrade to Version 2.0. [Learn more](https://developers.google.com/recaptcha/docs/faq)

- [I Can't Work Out Where to Add reCAPTCHA](https://developers.google.com/recaptcha/old/docs/troubleshooting#wheretoadd)
- [It's Not Working! Help!](https://developers.google.com/recaptcha/old/docs/troubleshooting#notworking)
- [reCAPTCHA is Accepting Incorrect Words](https://developers.google.com/recaptcha/old/docs/troubleshooting#incorrectwords)
- [No, I Mean \*Totally\* Incorrect Words](https://developers.google.com/recaptcha/old/docs/troubleshooting#reallyincorrectwords)
- [My Users Are Starting To Get One Word Captchas](https://developers.google.com/recaptcha/old/docs/troubleshooting#onewordcaptchas)

*** ** * ** ***


I Can't Work Out Where to Add reCAPTCHA

:   This advice applies to everyone who's integrating reCAPTCHA -- irrespective of language.

    Firstly you need to identify two **hot spots** in your code. These are
    the places where you'll be adding the reCAPTCHA calls.
    - **Display reCAPTCHA:** The first hot spot is the code that generates the form. Hopefully
      that's easy enough to find (by looking for a \<form\> tag in your html) and you have been able to display the
      CAPTCHA on your form.

    - **Check reCAPTCHA:** The second hot spot is the one that seems to cause people problems. You need to identify the
      code that handles form submission -- that is the code that runs when the user clicks on *submit*. It's hard to generalize
      about what this code looks like but here are some clues that may help you:

      - if your form can ever display an error message, for example if a required field is blank, look for the code that generates that error message.
      - if your form places information in a database look for code that does a SQL INSERT.
      - if your form sends mail, search for the code that does that.

      #### Form Already Has Validation

      Life will be easier if your form already has some validation logic (i.e.
      it handles invalid input from the user by displaying a
      message instead of performing whatever action it normally would).
      If that's the case and you can find the code that does that you're
      nearly home free. If the form can display an error message search
      for the text of the error message within the code and you're sure
      to be close. Once you've found the validation code you need to add a call to
      the check_answer function in addition to whatever other checks are there
      (email address blank? age too young? etc.).

      #### Form Has No Validation

      If there's currently no validation logic for your form -- if clicking on submit **always** succeeds -- then you
      have a more tricky problem. In that case you'll have to add the reCAPTCHA validation code right before the existing
      form handling code does whatever it does when the user submits. You'll also have to figure out how to redisplay the
      form to give the user another attempt at the captcha. Unfortunately there's no one stock answer to how you do that. It
      depends entirely on the structure of the code you already have. If the existing code isn't too complex you may have
      luck posting it on the [reCAPTCHA developer forum](http://groups.google.com/group/recaptcha) and asking
      for advice. (If you do post there, be sure to include enough information for others to help you; simply saying "my code
      doesn't work" usually doesn't yield good results.)


It's Not Working! Help!

:   Before doing anything else make sure you're using the correct keys. Are your public and private keys swapped? Did
    you remember to put the private key in the form handler as well as putting the public key in the form?

    Note that Mailhide uses **different keys** from the main form-based reCAPTCHA.

    Be sure that your form uses the POST method, or else change the reCAPTCHA form handler variables to GET instead of POST.

    If reCAPTCHA was working and you suddenly start getting "An internal error occurred",
    did you recently delete the Google account that you used to sign up for the keys? If so, register
    for new keys with an active account and try those.


reCAPTCHA is Accepting Incorrect Words

:   Humans make errors and we understand that. In reCAPTCHA we use an advanced risk analysis engine
    to determine whether the incoming request is from a human or not. When we are highly confident that
    users are human, we allow them to make small mistakes.


No, I Mean \*Totally\* Incorrect Words

:   If reCAPTCHA is accepting any input whatsoever, you probably aren't correctly validating the reCAPTCHA answer
    with the API servers. That is, either: (1) you are not correctly calling
    `https://www.google.com/recaptcha/api/verify` (or the equivalent function if you're using a plugin, such
    as `recaptcha_check_answer` in PHP), or (2) you are not taking the appropriate action
    given the response from our servers. Please see the specific instructions that you used to install reCAPTCHA
    (whether it be through a plugin or not) to learn how to check whether the user entered the answer correctly.


My Users Are Starting To Get One Word Captchas

:   reCAPTCHA is not always about two words. It is a test to tell human and robots apart. In cases
    where we have high confidence that you are human, we will serve you a much easier captcha (sample
    below). Our system relies on your entire engagement with reCAPTCHA -- before, during, and after
    solving it -- to decide if you pass or fail the test, rather than on the solution alone.

    ![Easy captcha](https://developers.google.com/static/recaptcha/old/images/easy_captcha.png)

    If you are curious about the security of these easy captchas, please refer to our blog:
    <http://googleonlinesecurity.blogspot.com/2013/10/recaptcha-just-got-easier-but-only-if.html>