Text Services Framework

The Text Services Framework (TSF) is a COM framework and API in Windows XP and later Windows operating systems that supports advanced text input and text processing. The Language Bar is the core user interface for Text Services Framework.

Text Services Framework
Operating systemMicrosoft Windows
PlatformIA-32, x86-64, Itanium, ARM64
PredecessorInput Method Manager (IMM32)
TypeSoftware framework


The Text Services Framework is designed to offer advanced language and word processing features to applications. It supports features such as multilingual support, keyboard drivers, handwriting recognition, speech recognition, as well as spell checking and other text and natural language processing functions. It is also downloadable for older Windows operating systems.[1]

The Language Bar enables text services to add UI elements to the toolbar and enables these elements when an application has focus. From the Language Bar, users can select the input language, and control keyboard input, handwriting recognition and speech recognition.

The language bar also provides a direct means to switch between installed languages, even when a non-TSF-enabled application has focus.

Starting with Windows XP Tablet PC Edition 2005 and Windows Vista, the RichEdit control supports the Text Services Framework. Windows Speech Recognition in Windows Vista is also implemented using the Text Services Framework.

Language bar tools – From left: Language selection menu, spell checking, keyboard layout selection menu, speech recognition, tools, handwriting recognition and drawing pad


  • TSF is extensible. Independent software vendors can write their own text processing feature for TSF.
  • TSF-enabled applications can receive text input from any text service that supports TSF without having to be aware of any details of the text source.[2] Services built using TSF are globally available to any application.
  • TSF enables a text service to store metadata with a document, a piece of text, or an object within the document. For example, a speech input text service can store sound information associated with a block of text.[3]
  • TSF enables text services to provide accurate and complete text conversion, with continuous access to the document buffer. Text services using TSF can avoid separating their functionality into modes for input and modes for editing. This input architecture enables the buffered and accumulating text stream to change dynamically, thereby enabling more efficient keyboard input and text editing.[3]
  • TSF is device-independent and enables text services for multiple input devices including keyboard, electronic pen or stylus, and microphone.[3]

ctfmon and CTFEdit

ctfmon (ctfmon.exe) is a process used to activate the Alternative User Input Text Input Processor (TIP) and also the Microsoft Language Bar. Ctfmon is also a component of Windows XP Tablet PC Edition, Windows Vista and Windows 7 which enables advanced user input services in applications (pen and ink, speech etc.).[4]

CTF means Common Text Framework according to the leaked Windows XP source code[5] and US 7490296  patent text.

CTF is an undocumented, insecure protocol involved in TSF which security researchers have observed to be present in Windows versions back to Windows XP.[6][7]


  1. ^ "Download: Platform SDK Redistributable: Microsoft Windows Text Services Framework Redist files". Archived from the original on July 13, 2012. Retrieved July 25, 2018.
  2. ^ "What is Text Services Framework?". May 31, 2018. Retrieved July 25, 2018.
  3. ^ a b c "Why Use Text Services Framework?". May 31, 2018. Retrieved July 25, 2018.
  4. ^ "Frequently asked questions about Ctfmon.exe". Archived from the original on 19 October 2004.
  5. ^ "Windows XP leak confirmed after user compiles the leaked code into a working OS". ZDNET. Retrieved 2023-01-31.
  6. ^ "Vulnerability in Microsoft CTF protocol goes back to Windows XP". ZDNet. Retrieved August 13, 2019.
  7. ^ "Down the Rabbit Hole". Google Project Zero. 13 August 2019. Retrieved August 13, 2019.

External linksEdit