A phonetic algorithm is an algorithm for indexing of words by their pronunciation. If the algorithm is based on orthography, it depends crucially on the spelling system of the language it is designed for: as most phonetic algorithms were developed for English they are less useful for indexing words in other languages. Because English spelling varies significantly depending on multiple factors, such as the word's origin and usage over time and borrowings from other languages, phonetic algorithms necessarily take into account numerous rules and exceptions. More general phonetic matching algorithms take articulatory features into account