Google Chat Formatting
Expert knowledge for converting Markdown and plain text to Google Chat's limited formatting syntax. Google Chat supports a subset of formatting that differs from standard Markdown.
When to Use
| Scenario | Use this skill | Alternative |
|---|---|---|
| Converting Markdown to Google Chat format | Yes | -- |
| Formatting messages for Google Chat | Yes | -- |
| Converting text for Slack or Discord | No | Use platform-specific formatting guides |
| Writing raw Markdown for GitHub or docs | No | Use standard Markdown syntax |
| Drafting structured tickets or issues | No | Use ticket-drafting-guidelines |
Core Expertise
Format Conversion
- Transform Markdown headers to bold text
- Convert list markers to bullet symbols
- Adapt bold/emphasis syntax to Google Chat format
- Preserve code blocks and inline code
- Ensure mobile-friendly spacing and readability
Google Chat Limitations
- No native header support (use bold instead)
- Limited text formatting (bold, italic, strikethrough, code)
- Bullet symbols (U+2022) instead of hyphen lists
- No nested formatting (bold inside italic, etc.)
- No tables, images, or advanced Markdown features
Conversion Rules
Headers to Bold Text
Google Chat has no header support. Convert all headers to bold text:
# Header → *Header*
## Subheader → *Subheader*
### Section → *Section*Pattern: Remove all # symbols and wrap text in single asterisks.
Text Formatting
Google Chat uses single asterisks for bold (not double):
**bold** → *bold*
__bold__ → *bold*
*italic* → _italic_
_italic_ → _italic_
~~strikethrough~~ → ~strikethrough~Key differences:
- Bold: Single asterisks
*text*(not**text**) - Italic: Single underscores
_text_(not*text*) - Strikethrough: Single tildes
~text~ - No nested formatting support
Code Formatting
Preserve code blocks and inline code unchanged:
`inline code` → `inline code` (unchanged)
### Lists
Replace Markdown list markers with bullet symbols:
- item → • item
- item → • item
+ item → • item
- numbered → 1. numbered (keep numbered lists)
**Pattern**: Replace `-`, `*`, `+` at line start with bullet symbol.
### Special Patterns
**Label formatting** (common in structured messages):
Label: → *Label:* Status: text → *Status:* text
### Whitespace
Normalize spacing for readability:
- Collapse multiple blank lines to single blank line
- Strip trailing whitespace
## Essential Commands
### Convert Markdown File
Read file, convert, write output
cat input.md | sed -E 's/^#{1,6} (.+)$/*\1*/g' | \ sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g' | \ sed -E 's/^[*+-] /• /g' > output.txt
### Convert Inline Text
Quick conversion of text string
echo "## Header\nbold text\n- item" | \ sed -E 's/^#{1,6} (.+)$/*\1*/g' | \ sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g' | \ sed -E 's/^[*+-] /• /g'
### Process Clipboard (macOS)
Convert clipboard content
pbpaste | sed -E 's/^#{1,6} (.+)$/*\1*/g' | \ sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g' | \ sed -E 's/^[*+-] /• /g' | pbcopy
### Batch Processing
Convert all .md files in directory
for file in *.md; do sed -E 's/^#{1,6} (.+)$/*\1*/g' "$file" | \ sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g' | \ sed -E 's/^[*+-] /• /g' > "${file%.md}.gchat.txt" done
For common conversion patterns (meeting notes, status updates, release notes), best practices, troubleshooting, integration examples, limitations, and advanced patterns, see [REFERENCE.md](https://github.com/laurigates/claude-plugins/blob/HEAD/communication-plugin/skills/google-chat-formatting/REFERENCE.md).
## Quick Reference
### Conversion Patterns
| Markdown | Google Chat | Notes |
| --- | --- | --- |
| `# Header` | `*Header*` | All header levels |
| `**bold**` | `*bold*` | Single asterisks |
| `__bold__` | `*bold*` | Underscores to asterisks |
| `*italic*` | `_italic_` | Single underscores |
| `- item` | `• item` | Bullet symbol |
| `` `code` `` | `` `code` `` | Unchanged |
### Sed Commands
Headers
sed -E 's/^#{1,6} (.+)$/*\1*/g'
Bold (asterisks)
sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g'
Bold (underscores)
sed -E 's/__([^_]+)__/\*\1\*/g'
Lists
sed -E 's/^[*+-] /• /g'
Collapse blank lines
sed -E '/^$/N;/^\n$/D'
Strip trailing whitespace
sed -E 's/[ \t]+$//'
## Agentic Optimizations
| Context | Command |
| --- | --- |
| Quick convert file | `sed -E 's/^#{1,6} (.+)$/*\1*/g' file.md \| sed -E 's/\*\*([^*]+)\*\*/\*\1\*/g'` |
| Check for unconverted | `grep -E '^\#\|^\*\*' output.txt` |
| Clipboard convert | `pbpaste \| sed -E 's/^#{1,6} (.+)$/*\1*/g' \| pbcopy` |
## Resources
- **Google Chat Formatting**: [https://support.google.com/chat/answer/7649118](https://support.google.com/chat/answer/7649118)
- **Markdown Guide**: [https://www.markdownguide.org/basic-syntax/](https://www.markdownguide.org/basic-syntax/)
- **Sed Reference**: [https://www.gnu.org/software/sed/manual/sed.html](https://www.gnu.org/software/sed/manual/sed.html)
- **Unicode Bullet**: U+2022