1. A computer-implemented method that is executed using one or more processors, the method comprising: receiving, from a user device, data representing user input to a virtual keyboard on the user device; identifying a character string based on the data representing the user input; performing a spellcheck on the character string to identify a first and a second candidate for the character string, the first and the second candidates being ranked by the spellcheck according to likelihood that a respective candidate is a correct spelling of a word corresponding to the character string, the first candidate ranked higher than the second candidate; for each of the first and second candidates, determining a popularity of the first and second candidates based on a respective frequency at which the first and second candidates are used as search queries input to a search engine, the second candidate having a higher popularity than the first candidate; adjusting the ranking of the candidates based on the popularity of the first and the second candidates such than the second candidate is ranked higher than the first candidate; and outputting, to the user device, a listing of the first and the second candidates based on the adjusted ranking.