0Pricing
AI Prompt Engineering · Lesson

Formal vs Informal Tone

Specify professional, casual, academic, or conversational voice in prompts.

Formal vs Informal Tone is a free AI Prompt Engineering lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the AI Prompt Engineering learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Tone: The Voice of Your Content

Tone is how your words feel to the reader. The same information can be conveyed in a formal, authoritative voice or in a casual, friendly one — and the right choice depends entirely on your audience, channel, and goal.

AI models can reproduce virtually any tone you describe — but you must describe it explicitly. Without instruction, they default to a slightly formal, neutral register.

What Makes Writing Formal

Formal writing has these characteristics:

  • No contractions (cannot instead of can't)
  • No colloquialisms or slang
  • Third-person perspective where possible
  • Complete, grammatically complex sentences
  • Passive voice occasionally acceptable
  • Technical vocabulary used precisely
  • No first-name references without introduction
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

formal_instruction = (
    'Write in a formal, professional tone. '
    'No contractions. No colloquialisms. No first-person pronouns. '
    'Use complete, grammatically precise sentences. '
    'Vocabulary: professional but accessible — not academic jargon.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=150,
    messages=[{
        'role': 'user',
        'content': (
            f'{formal_instruction}\n\n'
            f'Explain why we are updating our privacy policy.'
        )
    }]
)
print(response.content[0].text)

What Makes Writing Casual

Casual writing has these characteristics:

  • Contractions are common (we're, you'll, it's)
  • Conversational vocabulary
  • Shorter sentences and paragraphs
  • First and second person (I, you, we)
  • Occasional humor, warmth, or personality
  • Questions addressed to the reader
  • Relatable examples from everyday life
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

casual_instruction = (
    'Write in a casual, friendly tone. '
    'Use contractions freely. Use "you" to address the reader directly. '
    'Keep sentences short. Add warmth and personality. '
    'Write like you would explain this to a friend over coffee.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=150,
    messages=[{
        'role': 'user',
        'content': (
            f'{casual_instruction}\n\n'
            f'Explain why we are updating our privacy policy.'
        )
    }]
)
print(response.choices[0].message.content)

Same Content, Three Tones

The fastest way to understand tone is to see the same content written in multiple registers. We will use a simple scenario: notifying users that our app will be down for maintenance on Saturday night.

We will write it in three tones: corporate formal, startup casual, and academic. Watch how the vocabulary, sentence structure, and relationship to the reader changes.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

tones = [
    ('CORPORATE FORMAL',
     'Formal, no contractions, passive voice acceptable, corporate vocabulary. No personality.'),
    ('STARTUP CASUAL',
     'Casual, contractions OK, friendly, empathetic, slightly playful. Address reader as "you".'),
    ('ACADEMIC',
     'Precise, objective, technical vocabulary, third person, no emotion, no contractions.')
]

for label, tone_desc in tones:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=80,
        messages=[{
            'role': 'user',
            'content': (
                f'Tone: {tone_desc}\n\n'
                f'Write a 2-sentence notification: our app will be down for maintenance '
                f'on Saturday from 11 PM to 2 AM UTC.'
            )
        }]
    )
    print(f'[{label}]')
    print(response.content[0].text.strip())
    print()

Specifying Tone with Adjectives

The simplest tone specification is a list of descriptive adjectives:

  • 'In a confident, direct, no-nonsense tone'
  • 'In a warm, empathetic, encouraging tone'
  • 'In a playful, witty, slightly irreverent tone'
  • 'In a serious, authoritative, precise tone'

Use 2-4 adjectives that capture different dimensions: energy level, formality level, emotional temperature, and personality trait.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

test_tones = [
    'confident, direct, no-nonsense',
    'warm, empathetic, encouraging',
    'playful, witty, slightly irreverent',
]

for tone in test_tones:
    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=60,
        messages=[{
            'role': 'user',
            'content': (
                f'Tone: {tone}.\n\n'
                f'Write one sentence of marketing copy for a new AI writing tool. '
                f'Audience: busy startup founders.'
            )
        }]
    )
    print(f'Tone ({tone}):')
    print(response.choices[0].message.content.strip())
    print()

Specifying Tone with a Model Persona

A persona-based tone description is often more precise than adjectives alone. Instead of 'friendly', say 'write like Basecamp's product blog — casual but thoughtful, never patronizing.'

You can reference real-world writing styles:

  • 'Like a Stripe technical blog post'
  • 'Like Paul Graham writing a startup essay'
  • 'Like a Harvard Business Review executive summary'
  • 'Like a friendly Slack message from a colleague you respect'
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

references = [
    'Write like a Stripe technical blog post: clear, precise, respects the reader\'s intelligence.',
    'Write like a Harvard Business Review executive summary: formal, data-driven, concise.',
    'Write like a friendly Slack message from a helpful colleague — casual, direct, gets to the point.'
]

topic = 'Why our new feature reduces API response time by 40%.'

for ref in references:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=80,
        messages=[{
            'role': 'user',
            'content': f'Style reference: {ref}\n\nWrite 2 sentences about: {topic}'
        }]
    )
    print(f'Style: {ref[:55]}...')
    print(response.content[0].text.strip())
    print()

Tone Mismatches and Their Cost

A tone mismatch happens when the voice does not match the audience or context. Common mismatches:

  • Formal corporate language in a consumer mobile app
  • Casual slang in a legal contract
  • Overly technical language in a support email to non-technical users
  • Marketing puffery in an engineering README

Mismatched tone erodes trust and forces the reader to work harder to extract the meaning.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Mismatched tone examples
mismatches = [
    (
        'ERROR MESSAGE for a consumer app:',
        'Formal legal tone: no contractions, passive voice',
        'A fatal error has been encountered in the processing of your request.'
    ),
    (
        'LEGAL TERMS section:',
        'Casual startup tone: contractions, emojis',
        'Hey, so like, you gotta agree to our stuff before using this app okay?'
    )
]

for context, bad_tone, example in mismatches:
    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=80,
        messages=[{
            'role': 'user',
            'content': (
                f'CONTEXT: {context}\n'
                f'PROBLEM (wrong tone): {example}\n\n'
                f'Rewrite with the correct tone for the context. '
                f'One sentence. Explain in brackets why this tone works better.'
            )
        }]
    )
    print(response.choices[0].message.content.strip())
    print()

Controlling Emotional Temperature

Beyond formality, tone has an emotional temperature — from cold and objective to warm and enthusiastic:

  • Cold: 'The results indicate a 12% improvement.' (pure data)
  • Neutral: 'We improved performance by 12% in the latest release.'
  • Warm: 'We are proud to share that our team achieved a 12% speed boost.'
  • Enthusiastic: 'This is huge — we crushed it with a 12% performance leap!'
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

temperatures = [
    ('COLD/OBJECTIVE',    'Purely factual, no emotion, no personality, third person.'),
    ('NEUTRAL',           'Balanced, professional, slight warmth but no enthusiasm.'),
    ('WARM',              'Friendly, first person plural ("we"), positive but measured.'),
    ('ENTHUSIASTIC',      'High energy, excited, uses exclamation points, celebrates the user.')
]

fact = 'Our app now loads 3 seconds faster after the latest update.'

for label, instruction in temperatures:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=50,
        messages=[{
            'role': 'user',
            'content': f'Tone: {instruction}\n\nAnnounce this fact in 1 sentence: {fact}'
        }]
    )
    print(f'[{label}]: {response.content[0].text.strip()}')

Maintaining Consistent Tone

Tone consistency is as important as tone choice. A document that switches between formal and casual mid-way confuses readers and undermines credibility.

For multi-section documents:

  • Set tone in the system message or at the top of the prompt
  • Be explicit: 'Maintain this tone consistently throughout'
  • For very long pieces, remind the model of the tone in follow-up prompts
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# System message tone sets voice for all sections
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'system',
            'content': (
                'You are writing all content for a developer-focused SaaS company called GridDB. '
                'Tone: technical but approachable. No jargon without explanation. '
                'No contractions. Short sentences. No marketing superlatives. '
                'Maintain this tone consistently across every section.'
            )
        },
        {
            'role': 'user',
            'content': (
                'Write 2 short sections for our website:\n'
                '1. Hero tagline (max 8 words)\n'
                '2. One-paragraph product description (max 60 words)'
            )
        }
    ]
)
print(response.choices[0].message.content)

Tone in Different Content Types

Different content types have default expected tones. Deviating can be powerful — but only if intentional:

  • Legal documents: formal, precise → casual feels unprofessional
  • Error messages: clear, empathetic → cold feels hostile
  • Marketing copy: enthusiastic, benefit-focused → dry feels uninspiring
  • API documentation: technical, concise → flowery wastes developer time
  • Customer support: warm, solution-oriented → defensive feels combative
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

content_types = [
    ('ERROR MESSAGE', 'Empathetic, clear, action-oriented. No technical jargon. No blame.'),
    ('API DOCS',      'Terse, precise, no fluff. Technical vocabulary. Example-driven.'),
    ('SUPPORT REPLY', 'Warm, solution-focused, acknowledges frustration, offers next steps.')
]

scenario = 'A user cannot log in because their account has been temporarily locked.'

for content_type, tone in content_types:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=80,
        messages=[{
            'role': 'user',
            'content': (
                f'Content type: {content_type}\n'
                f'Tone: {tone}\n\n'
                f'Write 2 sentences for this scenario: {scenario}'
            )
        }]
    )
    print(f'[{content_type}]')
    print(response.content[0].text.strip())
    print()

Tone Across Channels

The same brand can legitimately use different tones across different channels. What matters is that each channel's tone is intentional and appropriate:

  • Twitter/X: casual, punchy, personality-forward
  • LinkedIn: professional, thoughtful, insights-driven
  • Email newsletter: warm, conversational, personal
  • Legal docs: formal, precise, passive where needed
  • In-app messages: friendly, brief, action-oriented
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

channels = [
    ('TWITTER', 'Casual, punchy, max 200 chars, can use one emoji'),
    ('LINKEDIN', 'Professional, insight-driven, 2 sentences, no emoji'),
    ('IN-APP',   'Friendly, action-oriented, 1 sentence, second person')
]

news = 'We just launched dark mode in our app.'

for channel, tone in channels:
    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=60,
        messages=[{
            'role': 'user',
            'content': f'Channel: {channel}. Tone: {tone}.\n\nAnnounce: {news}'
        }]
    )
    print(f'[{channel}]: {response.choices[0].message.content.strip()}')
    print()

Knowledge Check

A company's mobile app needs to show an error message when payment fails. The current message reads: 'The transaction cannot be processed due to an insufficient funds condition in the associated financial account.' What is the core tone problem?

Formal vs Informal Tone — Recap

Tone is one of the most powerful dimensions of prompt control. Key takeaways:

  • AI defaults to a neutral-formal register — always specify the tone you want
  • Use adjective combinations: 'confident, direct, no-nonsense'
  • Use persona references: 'like a Stripe blog post'
  • Control emotional temperature: from cold/objective to enthusiastic
  • Match tone to content type and audience
  • Set tone once in the system message for consistent application voice
  • Tone mismatch erodes trust — a legal document should not sound like a tweet

Frequently asked questions

Is the “Formal vs Informal Tone” lesson free?

Yes — the full text of “Formal vs Informal Tone” is free to read here on the web, and the AI Prompt Engineering course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the AI Prompt Engineering course, upgrade to CoddyKit PRO.

What will I learn in “Formal vs Informal Tone”?

Specify professional, casual, academic, or conversational voice in prompts. You practise AI Prompt Engineering with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start AI Prompt Engineering?

No prior experience is required. AI Prompt Engineering on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Formal vs Informal Tone” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this AI Prompt Engineering lesson?

Yes. Every AI Prompt Engineering lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Formal vs Informal Tone
  2. Specifying Your Audience
  3. Professional Writing Styles
  4. Adjusting Vocabulary Level
← Back to AI Prompt Engineering