Google Input Tools Chrome extension icon

Google Input Tools

🔍 Security Report Available
👥 4M+ users
📦 v11.4.0.0
💾 795KiB
📅 2025-09-05
View on Chrome Web Store

Chrome will indicate if you already have this installed.

Overview

By installing this extension, you agree to the Terms of Service at http://www.google.com/intl/en/policies/terms/.

Switch to typing in a different language with the click of the mouse, and switch back just as easily. The Google Input Tools extension provides virtual keyboards for over 90 languages, full IMEs or direct transliteration for over 30 different scripts, and handwriting input for over 40 languages.

What's New?

✓ Malayalam now prioritize Arabic numerals as the default output when typing numbers. This change makes it easier to input numbers, as Malayalam numerals are not commonly used.

Usage Instructions:

When you first install the extension, click on the extension icon, then select "Extension Options" in the pop-up menu. A new tab will appear where you can select your preferred languages or input methods. The keyboards, IMEs or handwriting input you add to 'Selected input tools' can be enabled at any time from the extension itself. You can always return to this options page to add, remove, or change the order of your input tools.

input tool, simply click on the extension icon, select the desired language tool in the pop-up menu, then click on any text box on the web page. To turn off an input tool, click on the extension icon and select the "Turn Off" option.

To use transliteration, type languages phonetically in English letters, and they'll appear in their correct alphabet. Keep in mind that transliteration is different from translation; the sound of the words is converted from one alphabet to the other, not the meaning. For example, to get in नमस्ते with Hindi transliteration, type in n-a-m-a-s-t-e. You will get a list of Hindi words sound like namaste. Then, press SPACE to select the first suggestion नमस्ते.

Latin IMEs are to help people type in Latin-script languages using the US keyboard. Features include automatic diacritics, spell correction, and prefix completion. To use Latin IMEs, type unaccented letters, and they will be corrected to a desired word. For example, type "franca" in French IME, "français" appears, and it can be committed by pressing TAB. If continuously typing "francais", "français" will be committed by
pressing SPACE. To get all the candidates for "francais", press BACKSPACE.

To use handwriting input, select the handwriting input of your desired language. Press trackpad or left click of mouse to hand draw a character on the pop-up handwriting panel. Select the character from the suggestion list, or simply press ENTER or SPACE key to select the first suggestion.

Need help? Find a problem? Point your browser here for support:
https://chrome.google.com/webstore/support/mclkkofklkfljcocdinagocijmpgbhab

Keyboard Shortcuts:

✓ ALT+SHIFT+N - Switch to next input tool in the list (if the extension is off, turn it on; if the current input tool is the last tool in the list, turn the extension off)

✓ ALT+SHIFT+R - Revert to the last input tool used (if none, turn off the extension)

✓ ALT+SHIFT+T Toggle the current input tool.

✓ SHIFT - Toggle between En/Cn state (Chinese input tools only)
✓ SHIFT+SPACE - Toggle the SBC/DBC mode (Chinese input tools only)
✓ CTRL+PERIOD - Toggle Chinese / European language punctuation (Chinese input tools only)

Limitations:

Due to security features of Google Chrome, the Google Input Tools extension will not assist with input in the address bar (omnibox), on the Chrome Web Store, or inside of other Chrome extensions. It does not currently assist with input inside of Flash applications.

By installing this extension, you agree to the Terms of Service at https://chrome.google.com/extensions/intl/en /gallery_tos.html

Tags

Productivity/tools productivity/tools

Privacy Practices

Not being sold to third parties, outside of the approved use cases
Not being used or transferred for purposes that are unrelated to the item's core functionality
Not being used or transferred to determine creditworthiness or for lending purposes
v11.4.0.0 Info Scanned Mar 5, 2026

Security Analysis — Google Input Tools

Analyzed v11.4.0.0 · Mar 5, 2026 · 225 JS files · 1959 KB scanned

Permissions

offscreen tabs storage scripting http://*/* https://*/*

Code Patterns Detected

innerHTML assignment — potential XSS vector String.fromCharCode (obfuscation) charCodeAt (obfuscation) Uses Fetch API Captures keystrokes Runs on ALL websites Broad host permissions Uses postMessage for cross-origin comms Sets up event listeners

External Connections

www.gstatic.com ssl.gstatic.com github.com inputtools.google.com drive.google.com fonts.gstatic.com csi.gstatic.com eddieantonio.ca www.altlab.dev

Package Contents 306 files · 2.4MB

📁_locales398KB
📁am9KB
{}messages.json9KB
📁ar11KB
{}messages.json11KB
📁bg15KB
{}messages.json15KB
📁bn12KB
{}messages.json12KB
📁ca5KB
{}messages.json5KB
📁cs5KB
{}messages.json5KB
📁da4KB
{}messages.json4KB
📁de5KB
{}messages.json5KB
📁el15KB
{}messages.json15KB
📁en4KB
{}messages.json4KB
📁en_GB4KB
{}messages.json4KB
📁es5KB
{}messages.json5KB
📁es_4194KB
{}messages.json4KB
📁et4KB
{}messages.json4KB
📁fa12KB
{}messages.json12KB
📁fi5KB
{}messages.json5KB
📁fil4KB
{}messages.json4KB
📁fr5KB
{}messages.json5KB
📁gu12KB
{}messages.json12KB
📁hi12KB
{}messages.json12KB
📁hr4KB
{}messages.json4KB
📁hu5KB
{}messages.json5KB
📁id4KB
{}messages.json4KB
📁it4KB
{}messages.json4KB
📁iw10KB
{}messages.json10KB
📁ja7KB
{}messages.json7KB
📁kn15KB
{}messages.json15KB
📁ko6KB
{}messages.json6KB
📁lt5KB
{}messages.json5KB
📁lv5KB
{}messages.json5KB
📁ml15KB
{}messages.json15KB
📁mr12KB
{}messages.json12KB
📁ms4KB
{}messages.json4KB
📁nb4KB
{}messages.json4KB
📁nl4KB
{}messages.json4KB
📁pl5KB
{}messages.json5KB
📁pt_BR5KB
{}messages.json5KB
📁pt_PT5KB
{}messages.json5KB
📁ro5KB
{}messages.json5KB
📁ru13KB
{}messages.json13KB
📁sk5KB
{}messages.json5KB
📁sl4KB
{}messages.json4KB
📁sr13KB
{}messages.json13KB
📁sv4KB
{}messages.json4KB
📁sw4KB
{}messages.json4KB
📁ta15KB
{}messages.json15KB
📁te14KB
{}messages.json14KB
📁th13KB
{}messages.json13KB
📁tr5KB
{}messages.json5KB
📁uk13KB
{}messages.json13KB
📁vi6KB
{}messages.json6KB
📁zh_CN5KB
{}messages.json5KB
📁zh_TW6KB
{}messages.json6KB
📁_metadata37KB
{}verified_contents.json37KB
📁image39KB
🖼Chrome_IME_Active2X.png7KB
🖼Chrome_IME_Inactive2X.png7KB
🖼cleardot.gif43B
🖼flat_input_tools_logo.png3KB
🖼flat_property_icons.png664B
🖼google_logo_41.png3KB
🖼it-128.png184B
🖼it-16.png113B
🖼it-32.png149B
🖼it-48.png150B
🖼ita_sprite5.png5KB
🖼ita_sprite6.png6KB
🖼pencil.png92B
🖼producticon_48px_active.png1KB
🖼search_button_normal.png3KB
🖼voice_disabled.png1KB
🖼voice_enabled.png678B
🖼voice_speaking.png1KB
📁imeconfigs114KB
📜am_t_i0_und.js678B
📜ar_t_i0_und.js799B
📜be_t_i0_und.js1KB
📜bg_t_i0_und.js1KB
📜bn_t_i0_und.js4KB
📜de_t_i0_und.js3KB
📜el_t_i0_und.js2KB
📜en_t_i0_und.js2KB
📜es_t_i0_und.js3KB
📜fa_t_i0_und.js2KB
📜fr_t_i0_und.js3KB
📜gu_t_i0_und.js2KB
📜he_t_i0_und.js3KB
📜hi_t_i0_und.js3KB
📜it_t_i0_und.js3KB
📜ja_t_ja_hira_i0_und.js6KB
📜kn_t_i0_und.js2KB
📜ml_t_i0_und.js3KB
📜mr_t_i0_und.js3KB
📜ne_t_i0_und.js3KB
📜nl_t_i0_und.js3KB
📜or_t_i0_und.js577B
📜pa_t_i0_und.js2KB
📜pt_t_i0_und.js3KB
📜ru_t_i0_und.js1KB
📜sa_t_i0_und.js2KB
📜si_t_i0_und.js577B
📜sr_t_i0_und.js1KB
📜ta_t_i0_und.js3KB
📜te_t_i0_und.js2KB
📜th_t_i0_und.js574B
📜ti_t_i0_und.js695B
📜uk_t_i0_und.js1KB
📜ur_t_i0_und.js2KB
📜vi_t_i0_und.js2KB
📜yue_hant_t_i0_jyutping.js2KB
📜yue_hant_t_i0_und.js2KB
📜zh_hans_t_i0_cangjie_1982.js2KB
📜zh_hans_t_i0_cangjie_1987.js2KB
📜zh_hant_t_i0_cangjie_1982.js2KB
📜zh_hant_t_i0_cangjie_1987.js2KB
📜zh_hant_t_i0_cangjie_1987_x_m0_simplified.js2KB
📜zh_hant_t_i0_pinyin.js2KB
📜zh_hant_t_i0_und.js3KB
📜zh_t_i0_pinyin.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_abc.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_flypy.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_jiajia.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_ms.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_ziguang.js2KB
📜zh_t_i0_pinyin_x0_shuangpin_ziranma.js2KB
📜zh_t_i0_wubi_1986.js2KB
📁layouts524KB
📜am.js16KB
📜ar.js986B
📜be.js1KB
📜bg.js1KB
📜bg_phone.js1KB
📜bn_inscript.js1KB
📜bn_phone.js9KB
📜bs.js5KB
📜ca.js3KB
📜ccp.js2KB
📜chr.js2KB
📜chr_phone.js4KB
📜ckb_ar.js785B
📜ckb_en.js793B
📜co_accents.js1KB
📜crk_phone.js3KB
📜crm_phone.js5KB
📜cs.js2KB
📜cs_qwertz.js2KB
📜csw_phone.js5KB
📜csw_phone_oji.js5KB
📜da.js3KB
📜de.js2KB
📜de_accents.js2KB
📜de_ch.js2KB
📜deva_phone.js10KB
📜dz.js1KB
📜el.js2KB
📜en.js360B
📜en_dvorak.js374B
📜es_accents.js3KB
📜es_es.js2KB
📜et.js3KB
📜ethi.js16KB
📜eu.js2KB
📜fa.js1KB
📜ff_adlm.js9KB
📜fi.js8KB
📜fr.js1KB
📜fr_accents.js2KB
📜fy_accents.js690B
📜ga_accents.js625B
📜gd_accents.js802B
📜gl.js2KB
📜gu_inscript.js1KB
📜gu_phone.js8KB
📜gu_phone2.js1KB
📜guru_inscript.js1KB
📜guru_phone.js10KB
📜hangul.js4KB
📜haw.js397B
📜haw_accents.js650B
📜he.js812B
📜hi.js1KB
📜hi_phone.js1KB
📜hr.js5KB
📜hu_101.js2KB
📜hy_east.js1KB
📜hy_west.js1KB
📜is.js2KB
📜it.js1KB
📜it_accents.js2KB
📜iu_inuktitu.js2KB
📜iu_nunavik.js5KB
📜iu_nunavut.js4KB
📜iw.js812B
📜ka_qwerty.js747B
📜ka_typewriter.js818B
📜kk.js1KB
📜km.js1KB
📜kn_inscript.js1KB
📜kn_phone.js5KB
📜ko.js753B
📜ku.js461B
📜ky_cyrl.js1KB
📜latn_002.js9KB
📜lb_accents.js549B
📜lis.js704B
📜lo.js776B
📜lt.js825B
📜lv.js2KB
📜mez.js448B
📜mi.js519B
📜mk.js1KB
📜ml_inscript.js1KB
📜ml_phone.js51KBlarge
📜mn_cyrl.js1KB
📜mni_mtei_phone.js12KB
📜mr_phone.js1KB
📜mt.js998B
📜my.js2KB
📜my_myansan.js2KB
📜myh.js884B
📜ne_inscript.js1KB
📜ne_phone.js751B
📜nl.js3KB
📜nl_accents.js3KB
📜no.js3KB
📜nv.js1KB
📜nv_std.js615B
📜oj.js3KB
📜oj_ojibwe.js3KB
📜one.js1KB
📜or_inscript.js1KB
📜or_phone.js11KB
📜osa.js4KB
📜pl.js2KB
📜pl_accents.js2KB
📜prs.js928B
📜ps.js902B
📜pt_br.js2KB
📜pt_br_accents.js3KB
📜pt_pt.js2KB
📜pt_pt_accents.js3KB
📜rhg_rohg.js2KB
📜ro.js5KB
📜ro_sr13392_primary.js5KB
📜ro_sr13392_secondary.js5KB
📜rom.js5KB
📜ru.js2KB
📜ru_phone.js1KB
📜sa_phone.js5KB
📜sd.js2KB
📜see.js1KB
📜si.js2KB
📜sk.js2KB
📜sk_qwerty.js2KB
📜sl.js2KB
📜sm_accents.js647B
📜sq.js4KB
📜sr_cyrl.js1KB
📜sr_latn.js2KB
📜srp.js5KB
📜sv.js3KB
📜ta_inscript.js1KB
📜ta_itrans.js2KB
📜ta_phone.js5KB
📜ta_tamil99.js1KB
📜ta_typewriter.js853B
📜te_inscript.js1KB
📜te_phone.js5KB
📜tg.js1KB
📜th.js1KB
📜th_pattajoti.js721B
📜th_tis.js713B
📜tr_f.js2KB
📜tr_f_accents.js2KB
📜tr_q.js2KB
📜tr_q_accents.js2KB
📜tt.js2KB
📜ug.js592B
📜uk_101.js1KB
📜ur.js1KB
📜us_intl.js2KB
📜uz_cyrl_phone.js1KB
📜uz_cyrl_type.js1KB
📜uz_latn.js486B
📜uzs.js893B
📜vi_tcvn.js5KB
📜vi_telex.js71KBlarge
📜vi_viqr.js804B
📜vi_vni.js2KB
📜win.js1KB
📜yi.js1KB
📜yo_ng.js688B
📜chext_backgroundpage.js66KBlarge
🎨chext_common.css6KB
📜chext_driver.js317KBlarge
🎨chext_inputtoolsbin.css20KB
📜chext_loader.js63KBlarge
📜chext_options.js110KBlarge
📜chext_popup.js76KBlarge
🎨chext_scrollbar.css615B
📜inner_bin.js65KBlarge
🌐keyboard.html338B
📜languagedisplay.js624KBlarge
{}manifest.json2KB
🌐offscreen.html119B
📜offscreen.js127B
🌐options.html2KB
🌐popup.html426B
🎨vk_css_bin.css6KB

What This Extension Does

The Google Input Tools extension allows users to type in different languages, providing virtual keyboards for over 90 languages. It solves the problem of language barriers on the web and is suitable for anyone who needs to communicate in multiple languages.

Permissions Explained

  • offscreenexpected: This permission allows the extension to create windows outside of the browser's main window, which can be used to display virtual keyboards or other UI elements.
    Technical: The chrome.windows API is accessed, allowing the extension to create and manage windows. This could potentially be used for phishing attacks if compromised.
  • tabsexpected: This permission allows the extension to access and manipulate browser tabs, which is necessary for displaying virtual keyboards or other UI elements in specific tabs.
    Technical: The chrome.tabs API is accessed, allowing the extension to create, update, and delete tabs. This could potentially be used for tab hijacking if compromised.
  • storageexpected: This permission allows the extension to store data locally on the user's device, which is necessary for storing language preferences and other settings.
    Technical: The chrome.storage API is accessed, allowing the extension to store and retrieve data. This could potentially be used for storing sensitive data if compromised.
  • scriptingexpected: This permission allows the extension to execute scripts in the context of web pages, which is necessary for providing virtual keyboards and other UI elements.
    Technical: The chrome.scripting API is accessed, allowing the extension to inject scripts into web pages. This could potentially be used for injecting malware if compromised.
  • http://*/*expected: This permission allows the extension to make HTTP requests to any domain, which is necessary for accessing language data and other resources.
    Technical: The chrome.tabs API is accessed with the http://*/* permission, allowing the extension to make cross-origin requests. This could potentially be used for phishing attacks if compromised.
  • https://*/*expected: This permission allows the extension to make HTTPS requests to any domain, which is necessary for accessing language data and other resources.
    Technical: The chrome.tabs API is accessed with the https://*/* permission, allowing the extension to make cross-origin requests. This could potentially be used for phishing attacks if compromised.

Your Data

The extension accesses language data and other resources from various domains, including Google's servers.

Technical Details

The extension makes requests to the following domains: www.gstatic.com, ssl.gstatic.com, github.com, inputtools.google.com, drive.google.com, fonts.gstatic.com, csi.gstatic.com, eddieantonio.ca, and www.altlab.dev. The protocol used is both HTTP and HTTPS. No encryption status or data types are specified.

Code Findings

innerHTML assignmentMedium

The extension uses innerHTML to inject scripts into web pages, which can potentially lead to XSS attacks if compromised.

Technical: The innerHTML property is accessed in the contentScript.js file, allowing the extension to inject scripts into web pages. This could potentially be used for injecting malware if compromised.

💡 This pattern is commonly used in legitimate extensions to provide UI elements and interact with web pages.

String.fromCharCodeMedium

The extension uses String.fromCharCode to obfuscate code, which can make it harder for users to understand what the extension is doing.

Technical: The String.fromCharCode function is used in the contentScript.js file to obfuscate code. This could potentially be used to hide malicious behavior if compromised.

💡 This pattern is commonly used in legitimate extensions to provide UI elements and interact with web pages.

Captures keystrokesCritical

The extension captures keystrokes, which can potentially be used for malicious purposes if compromised.

Technical: The chrome.tabs API is accessed with the http://*/* permission, allowing the extension to capture keystrokes. This could potentially be used for phishing attacks or other malicious behavior if compromised.

💡 This pattern is commonly used in legitimate extensions to provide UI elements and interact with web pages.

Bottom Line

The Google Input Tools extension has some security concerns, including the potential for XSS attacks due to innerHTML assignment and the capture of keystrokes. However, these concerns are mitigated by the extension's legitimate use of permissions and its alignment with the stated purpose. Users should exercise caution when installing this extension.

Similar Extensions

More in Productivity/tools →
Easy-to-use PDF tools to view, edit, convert, fill, e-sign PDF files, and more in your browser.
Productivity/tools AI

Zotero Connector

7M+ users
Save references to Zotero from your web browser
Productivity/tools
Browsec VPN is a Chrome VPN extension that protects your IP from Internet threats and lets you browse privately for free…
Productivity/tools