Skip to content

Model vs model

Claude Haiku 4.5 vs DeepSeek V4.1 Flash

Claude Haiku 4.5 and DeepSeek V4.1 Flash are both in llmwise. What each gets on every plan, what it reads, how it's served and what happens when its provider fails, from the catalog and the code that runs them.

Model prices and specs checked against OpenRouter's Claude Haiku 4.5 page, OpenRouter's DeepSeek V4.1 Flash page. Updated .

Short answer

DeepSeek V4.1 Flash is an everyday model (60 messages a day on Pro); Claude Haiku 4.5 draws on the monthly allowance (up to 250 messages a month on Pro). Otherwise, only Claude Haiku 4.5 reads a PDF as the whole file. In our test runs, Claude Haiku 4.5 passed 43 of the 50 prompts both answered and DeepSeek V4.1 Flash 48; 7 prompts split them, most on coding (3 to 5).

Claude Haiku 4.5 vs DeepSeek V4.1 Flash, prompt by prompt

Every prompt Claude Haiku 4.5 and DeepSeek V4.1 Flash both answered, compared directly, their biggest differences first. One run each, through OpenRouter: a wait depends on the provider and the load that day, so a lead under 10% counts as close.

Of the 50 prompts both answered, both passed 42, only Claude Haiku 4.5 passed 1, only DeepSeek V4.1 Flash passed 6, and neither passed 1. Claude Haiku 4.5 answered sooner on 5 of the 50 and DeepSeek V4.1 Flash on 44; the rest were within 10% of each other. The 50 replies cost $0.0741 on Claude Haiku 4.5 and $0.0260 on DeepSeek V4.1 Flash: 2.9× less on DeepSeek V4.1 Flash.

The 7 prompts only one of Claude Haiku 4.5 and DeepSeek V4.1 Flash passed

  • Evaluate an arithmetic expression, no eval (coding): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: 14 of 15 tests passed. First failure: evaluate("-2 ^ 2"): Expected values to be strictly deep-equal: DeepSeek V4.1 Flash: All 15 tests passed.

  • Parse CSV with quoted fields (coding): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: 5 of 8 tests passed. First failure: parseCsv('"line1\nline2",end\r\nnext,row\r\n'): Expected values to be strictly deep-equal: DeepSeek V4.1 Flash: All 8 tests passed.

  • Rewrite corporate jargon in plain words (writing): Claude Haiku 4.5 passed and DeepSeek V4.1 Flash didn't. Claude Haiku 4.5: Graded 4.3 of 5 on average (lowest 4). DeepSeek V4.1 Flash: Graded 3.7 of 5 on average (lowest 3).

  • A product announcement with five rules (writing): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: Graded 3.7 of 5 on average (lowest 3). DeepSeek V4.1 Flash: Graded 4.3 of 5 on average (lowest 4).

  • Average order value in August (data analysis): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: Final answer 275.00; expected 300. DeepSeek V4.1 Flash: Final answer 300.00: right.

  • Correlation between ad spend and sign-ups (data analysis): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: Final answer 0.99; expected 0.97. DeepSeek V4.1 Flash: Final answer 0.97: right.

  • A frustrated customer (customer support): DeepSeek V4.1 Flash passed and Claude Haiku 4.5 didn't. Claude Haiku 4.5: Graded 3.3 of 5 on average (lowest 3). DeepSeek V4.1 Flash: Graded 4.7 of 5 on average (lowest 4).

Job by job, the widest gaps first

  • Data analysis: Claude Haiku 4.5 passed 3 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 3.2× sooner at the median, 2.7 s against 0.9 s. DeepSeek V4.1 Flash cost 2.9× less, $0.0125 against $0.0042 for the 5 replies. Claude Haiku 4.5's replies ran 138% longer, in tokens of reply, thinking not counted.

  • Coding: Claude Haiku 4.5 passed 3 of 5 and DeepSeek V4.1 Flash 5 of 5. Their median waits were close, 2.3 s against 2.5 s. DeepSeek V4.1 Flash cost 1.5× less, $0.0137 against $0.0092 for the 5 replies. Claude Haiku 4.5's replies ran 14% longer, in tokens of reply, thinking not counted.

  • Customer support: Claude Haiku 4.5 passed 3 of 5 and DeepSeek V4.1 Flash 4 of 5. DeepSeek V4.1 Flash answered 2.1× sooner at the median, 2.7 s against 1.3 s. DeepSeek V4.1 Flash cost 3.2× less, $0.0073 against $0.0023 for the 5 replies. Their replies ran to about the same length.

  • Math: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 2.4× sooner at the median, 2.2 s against 0.9 s. DeepSeek V4.1 Flash cost 6.2× less, $0.0077 against $0.0012 for the 5 replies. Claude Haiku 4.5's replies ran 151% longer, in tokens of reply, thinking not counted.

  • RAG and answering from documents: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 3.5× sooner at the median, 1.2 s against 0.3 s. DeepSeek V4.1 Flash cost 6.0× less, $0.0050 against $0.0008 for the 5 replies. Their replies ran to about the same length.

  • Summarization: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 3.3× sooner at the median, 1.7 s against 0.5 s. DeepSeek V4.1 Flash cost 5.0× less, $0.0051 against $0.0010 for the 5 replies. Their replies ran to about the same length.

  • SQL: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 3.0× sooner at the median, 1.2 s against 0.4 s. DeepSeek V4.1 Flash cost 4.9× less, $0.0049 against $0.0010 for the 5 replies. Claude Haiku 4.5's replies ran 24% longer, in tokens of reply, thinking not counted.

  • Agents and tool use: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 3.2× sooner at the median, 1.1 s against 0.4 s. DeepSeek V4.1 Flash cost 4.6× less, $0.0047 against $0.0010 for the 5 replies. Claude Haiku 4.5's replies ran 66% longer, in tokens of reply, thinking not counted.

  • Translation: Claude Haiku 4.5 passed 5 of 5 and DeepSeek V4.1 Flash 5 of 5. DeepSeek V4.1 Flash answered 1.4× sooner at the median, 1.8 s against 1.3 s. DeepSeek V4.1 Flash cost 2.6× less, $0.0074 against $0.0029 for the 5 replies. Claude Haiku 4.5's replies ran 26% longer, in tokens of reply, thinking not counted.

  • Writing: Claude Haiku 4.5 passed 4 of 5 and DeepSeek V4.1 Flash 4 of 5. DeepSeek V4.1 Flash answered 1.7× sooner at the median, 2.2 s against 1.3 s. DeepSeek V4.1 Flash cost 2.5× less, $0.0057 against $0.0023 for the 5 replies. Their replies ran to about the same length.

All 50 prompts: who passed, who answered sooner, who cost less
Claude Haiku 4.5 and DeepSeek V4.1 Flash on each prompt of our test runs
PromptResultSoonerCheaper
Turn a title into a URL slugBoth passedDeepSeek V4.1 Flash, 1.2×took 1.5 s and 1.3 sDeepSeek V4.1 Flash, 2.3×cost $0.0010 and $0.0004
Parse a duration like “1h 30m”Both passedClosetook 2.3 s and 2.5 sDeepSeek V4.1 Flash, 1.9×cost $0.0022 and $0.0011
Merge overlapping intervalsBoth passedDeepSeek V4.1 Flash, 3.1×took 2.0 s and 0.6 sDeepSeek V4.1 Flash, 5.1×cost $0.0017 and $0.0003
Evaluate an arithmetic expression, no evalOnly DeepSeek V4.1 FlashDeepSeek V4.1 Flash, 1.3×took 7.6 s and 5.8 sDeepSeek V4.1 Flash, 1.9×cost $0.0056 and $0.0030
Parse CSV with quoted fieldsOnly DeepSeek V4.1 FlashClaude Haiku 4.5, 2.6×took 3.5 s and 9.1 sClaude Haiku 4.5, 1.3×cost $0.0033 and $0.0042
Announce a second bakery shop on LinkedInBoth passedDeepSeek V4.1 Flash, 1.9×took 2.6 s and 1.3 sDeepSeek V4.1 Flash, 3.4×cost $0.0013 and $0.0004
Rewrite corporate jargon in plain wordsOnly Claude Haiku 4.5DeepSeek V4.1 Flash, 1.8×took 1.6 s and 0.9 sDeepSeek V4.1 Flash, 2.8×cost $0.0008 and $0.0003
Decline a meeting and offer two timesBoth passedClaude Haiku 4.5, 1.1×took 2.0 s and 2.2 sDeepSeek V4.1 Flash, 4.5×cost $0.0010 and $0.0002
A product announcement with five rulesOnly DeepSeek V4.1 FlashDeepSeek V4.1 Flash, 2.7×took 2.2 s and 0.8 sDeepSeek V4.1 Flash, 4.2×cost $0.0012 and $0.0003
Argue both sides of free busesBoth passedDeepSeek V4.1 Flash, 1.3×took 3.4 s and 2.6 sDeepSeek V4.1 Flash, 1.3×cost $0.0014 and $0.0011
A discount, then sales taxBoth passedDeepSeek V4.1 Flash, 1.6×took 1.1 s and 0.7 sDeepSeek V4.1 Flash, 5.6×cost $0.0007 and $0.0001
Pens at 3 for $4Both passedDeepSeek V4.1 Flash, 2.3×took 2.2 s and 0.9 sDeepSeek V4.1 Flash, 3.5×cost $0.0014 and $0.0004
Compound interest over three yearsBoth passedDeepSeek V4.1 Flash, 1.7×took 3.5 s and 2.1 sDeepSeek V4.1 Flash, 6.8×cost $0.0013 and $0.0002
Four-digit numbers whose digits sum to 9Both passedDeepSeek V4.1 Flash, 4.2×took 2.9 s and 0.7 sDeepSeek V4.1 Flash, 8.5×cost $0.0024 and $0.0003
The highest of three dice is a 5Both passedDeepSeek V4.1 Flash, 2.2×took 2.2 s and 1.0 sDeepSeek V4.1 Flash, 7.7×cost $0.0018 and $0.0002
An article in three bulletsBoth passedDeepSeek V4.1 Flash, 3.4×took 1.8 s and 0.5 sDeepSeek V4.1 Flash, 5.3×cost $0.0011 and $0.0002
An email thread in one sentenceBoth passedDeepSeek V4.1 Flash, 3.1×took 1.3 s and 0.4 sDeepSeek V4.1 Flash, 5.8×cost $0.0007 and $0.0001
Decisions and action items from a meetingBoth passedClaude Haiku 4.5, 1.4×took 1.7 s and 2.4 sDeepSeek V4.1 Flash, 5.1×cost $0.0011 and $0.0002
A quarterly memo for the CEOBoth passedDeepSeek V4.1 Flash, 3.6×took 1.5 s and 0.4 sDeepSeek V4.1 Flash, 4.6×cost $0.0012 and $0.0003
A study with a negative resultBoth passedDeepSeek V4.1 Flash, 6.6×took 3.4 s and 0.5 sDeepSeek V4.1 Flash, 4.9×cost $0.0010 and $0.0002
The region with the most revenueBoth passedDeepSeek V4.1 Flash, 3.6×took 2.7 s and 0.8 sDeepSeek V4.1 Flash, 5.2×cost $0.0026 and $0.0005
Average order value in AugustOnly DeepSeek V4.1 FlashDeepSeek V4.1 Flash, 2.4×took 2.1 s and 0.9 sDeepSeek V4.1 Flash, 5.2×cost $0.0023 and $0.0004
Revenue change from July to AugustBoth passedDeepSeek V4.1 Flash, 3.8×took 4.2 s and 1.1 sDeepSeek V4.1 Flash, 3.2×cost $0.0022 and $0.0007
A median, filtered two waysBoth passedDeepSeek V4.1 Flash, 3.2×took 2.0 s and 0.6 sDeepSeek V4.1 Flash, 5.3×cost $0.0016 and $0.0003
Correlation between ad spend and sign-upsOnly DeepSeek V4.1 FlashClaude Haiku 4.5, 1.2×took 5.0 s and 5.8 sDeepSeek V4.1 Flash, 1.6×cost $0.0037 and $0.0023
A late orderBoth passedDeepSeek V4.1 Flash, 1.5×took 2.0 s and 1.3 sDeepSeek V4.1 Flash, 2.8×cost $0.0014 and $0.0005
A return inside the windowBoth passedDeepSeek V4.1 Flash, 2.6×took 2.4 s and 0.9 sDeepSeek V4.1 Flash, 4.8×cost $0.0013 and $0.0003
A frustrated customerOnly DeepSeek V4.1 FlashDeepSeek V4.1 Flash, 2.3×took 3.0 s and 1.3 sDeepSeek V4.1 Flash, 3.4×cost $0.0016 and $0.0005
A refund request outside the windowBoth passedDeepSeek V4.1 Flash, 2.6×took 2.7 s and 1.1 sDeepSeek V4.1 Flash, 4.2×cost $0.0013 and $0.0003
A message with a planted instructionNeither passedDeepSeek V4.1 Flash, 1.4×took 3.2 s and 2.3 sDeepSeek V4.1 Flash, 2.3×cost $0.0018 and $0.0008
A delivery message into SpanishBoth passedDeepSeek V4.1 Flash, 1.6×took 1.5 s and 0.9 sDeepSeek V4.1 Flash, 3.4×cost $0.0011 and $0.0003
A product description into FrenchBoth passedClaude Haiku 4.5, 1.5×took 1.4 s and 2.1 sDeepSeek V4.1 Flash, 1.3×cost $0.0011 and $0.0009
A meeting note into GermanBoth passedDeepSeek V4.1 Flash, 1.4×took 1.8 s and 1.3 sDeepSeek V4.1 Flash, 1.9×cost $0.0010 and $0.0005
Idioms into natural JapaneseBoth passedDeepSeek V4.1 Flash, 1.9×took 3.3 s and 1.7 sDeepSeek V4.1 Flash, 3.2×cost $0.0019 and $0.0006
A lease clause into Brazilian PortugueseBoth passedDeepSeek V4.1 Flash, 3.3×took 3.5 s and 1.1 sDeepSeek V4.1 Flash, 4.3×cost $0.0022 and $0.0005
Customers in one countryBoth passedDeepSeek V4.1 Flash, 4.2×took 1.1 s and 0.3 sDeepSeek V4.1 Flash, 5.8×cost $0.0007 and $0.0001
Count orders by statusBoth passedDeepSeek V4.1 Flash, 3.1×took 0.8 s and 0.3 sDeepSeek V4.1 Flash, 9.3×cost $0.0006 and $0.0001
Revenue by categoryBoth passedDeepSeek V4.1 Flash, 3.0×took 1.2 s and 0.4 sDeepSeek V4.1 Flash, 7.0×cost $0.0011 and $0.0002
Every customer, even those without ordersBoth passedDeepSeek V4.1 Flash, 1.1×took 2.1 s and 1.9 sDeepSeek V4.1 Flash, 2.7×cost $0.0010 and $0.0004
Monthly revenue with a running totalBoth passedDeepSeek V4.1 Flash, 2.3×took 1.6 s and 0.7 sDeepSeek V4.1 Flash, 5.2×cost $0.0016 and $0.0003
A fact from one sectionBoth passedDeepSeek V4.1 Flash, 3.6×took 1.1 s and 0.3 sDeepSeek V4.1 Flash, 5.5×cost $0.0009 and $0.0002
Core hours and start timesBoth passedDeepSeek V4.1 Flash, 3.4×took 1.1 s and 0.3 sDeepSeek V4.1 Flash, 7.0×cost $0.0009 and $0.0001
Two sections in one answerBoth passedDeepSeek V4.1 Flash, 3.9×took 1.3 s and 0.3 sDeepSeek V4.1 Flash, 8.2×cost $0.0011 and $0.0001
A later amendment changes the answerBoth passedDeepSeek V4.1 Flash, 1.9×took 1.9 s and 1.0 sDeepSeek V4.1 Flash, 4.4×cost $0.0012 and $0.0003
A question the handbook doesn't answerBoth passedDeepSeek V4.1 Flash, 2.9×took 1.2 s and 0.4 sDeepSeek V4.1 Flash, 7.2×cost $0.0009 and $0.0001
Pick the tool and work out the dateBoth passedDeepSeek V4.1 Flash, 3.2×took 1.1 s and 0.3 sDeepSeek V4.1 Flash, 5.6×cost $0.0008 and $0.0001
Convert a currencyBoth passedDeepSeek V4.1 Flash, 3.5×took 1.0 s and 0.3 sDeepSeek V4.1 Flash, 7.0×cost $0.0008 and $0.0001
Book a meeting from a sentenceBoth passedDeepSeek V4.1 Flash, 1.9×took 1.2 s and 0.6 sDeepSeek V4.1 Flash, 3.4×cost $0.0010 and $0.0003
Search, but don't bookBoth passedDeepSeek V4.1 Flash, 3.2×took 1.1 s and 0.4 sDeepSeek V4.1 Flash, 5.4×cost $0.0010 and $0.0002
Two calls with a unit conversionBoth passedDeepSeek V4.1 Flash, 1.9×took 1.2 s and 0.6 sDeepSeek V4.1 Flash, 4.0×cost $0.0011 and $0.0003

Claude Haiku 4.5 vs DeepSeek V4.1 Flash in our test runs

Claude Haiku 4.5 and DeepSeek V4.1 Flash on the same prompts, job by job: how many replies passed their check.

Based on 100 of our test runs on , through OpenRouter with the app's own prompt and settings. Updated .

Claude Haiku 4.5 and DeepSeek V4.1 Flash in our test runs, job by job
JobClaude Haiku 4.5DeepSeek V4.1 Flash
Coding3 of 55 of 5
Writing4 of 54 of 5
Math5 of 55 of 5
Summarization5 of 55 of 5
Data analysis3 of 55 of 5
Customer support3 of 54 of 5
Translation5 of 55 of 5
SQL5 of 55 of 5
RAG and answering from documents5 of 55 of 5
Agents and tool use5 of 55 of 5
All jobs43 of 50 · 1 message each · $0.0015 a reply48 of 50 · 1 message each · $0.0005 a reply

The same prompts, sent to both through llmwise's own pipeline and checked the same way: five for each job. A bold count is the one that passed more. Messages: what each reply counted as on Pro. Cost: what OpenRouter charged us per reply, on average. Every prompt, and how it's scored.

Where they differed most, coding: both replies to a prompt only one of them passed.

A hard prompt: “Evaluate an arithmetic expression, no eval”, in full.

  • Claude Haiku 4.5

    Failed: 14 of 15 tests passed. First failure: evaluate("-2 ^ 2"): Expected values to be strictly deep-equal:

    ```javascript
    function evaluate(expression) {
      const tokens = tokenize(expression);
      const parser = new Parser(tokens);
      const result = parser.parseExpression();
      
      if (parser.pos !== tokens.length) {
        throw new Error("Unexpected tokens after expression");
      }
      
      return result;
    }
    
    function tokenize(expression) {
      const tokens = [];
      let i = 0;
      
      while (i < expression.length) {
        const ch = expression[i];
        
        if (/\s/.test(ch)) {
          i++;
          continue;
        }
        
        if (/\d/.test(ch)) {
          let num = '';
          while (i < expression.length && /[\d.]/.test(expression[i])) {
            num += expression[i];
            i++;
          }
          const parsed = parseFloat(num);
          if (isNaN(parsed)) {
            throw new Error(`Invalid number: ${num}`);
          }
          tokens.push({ type: 'NUMBER', value: parsed });
          continue;
        }
        
        if ('+-*/^()'.includes(ch)) {
          tokens.push({ type: ch, value: ch });
          i++;
          continue;
        }
        
        throw new Error(`Unexpected character: ${ch}`);
      }
      
      return tokens;
    }
    
    class Parser {
      constructor(tokens) {
        this.tokens = tokens;
        this.pos = 0;
      }
      
      peek() {
        return this.tokens[this.pos];
      }
      
      consume() {
        return this.tokens[this.pos++];
      }
      
      parseExpression() {
        return this.parseAddSub();
      }
      
      parseAddSub() {
        let left = this.parseMulDiv();
        
        while (this.peek() && (this.peek().type === '+' || this.peek().type === '-')) {
          const op = this.consume().type;
          const right = this.parseMulDiv();
          left = op === '+' ? left + right : left - right;
        }
        
        return left;
      }
      
      parseMulDiv() {
        let left = this.parsePower();
        
        while (this.peek() && (this.peek().type === '*' || this.peek().type === '/')) {
          const op = this.consume().type;
          const right = this.parsePower();
          left = op === '*' ? left * right : left / right;
        }
        
        return left;
      }
      
      parsePower() {
        let left = this.parseUnary();
        
        if (this.peek() && this.peek().type === '^') {
          this.consume();
          const right = this.parsePower();
          left = Math.pow(left, right);
        }
        
        return left;
      }
      
      parseUnary() {
        if (this.peek() && this.peek().type === '-') {
          this.consume();
          return -this.parseUnary();
        }
        
        if (this.peek() && this.peek().type === '+') {
          this.consume();
          return this.parseUnary();
        }
        
        return this.parsePrimary();
      }
      
      parsePrimary() {
        const token = this.peek();
        
        if (!token) {
          throw new Error("Unexpected end of expression");
        }
        
        if (token.type === 'NUMBER') {
          this.consume();
          return token.value;
        }
        
        if (token.type === '(') {
          this.consume();
          const result = this.parseExpression();
          
          if (!this.peek() || this.peek().type !== ')') {
            throw new Error("Missing closing parenthesis");
          }
          
          this.consume();
          return result;
        }
        
        throw new Error(`Unexpected token: ${token.value}`);
      }
    }
    ```

    599 tokens in, 1,007 out · 7.6 s · $0.0056 · 1 message on Pro · answered by anthropic/claude-haiku-4.5 via Amazon Bedrock ·

  • DeepSeek V4.1 Flash

    Passed: All 15 tests passed.

    ```javascript
    function evaluate(expression) {
      if (typeof expression !== 'string') {
        throw new Error('Expression must be a string');
      }
    
      // ---- Tokenizer ----
      const tokens = [];
      let i = 0;
      const isDigit = (c) => c >= '0' && c <= '9';
    
      while (i < expression.length) {
        const ch = expression[i];
    
        if (ch === ' ' || ch === '\t') {
          i++;
          continue;
        }
    
        // number: digits with an optional single decimal point (at least one digit)
        if (isDigit(ch) || ch === '.') {
          let j = i;
          let digits = 0;
          while (j < expression.length && isDigit(expression[j])) {
            j++;
            digits++;
          }
          if (j < expression.length && expression[j] === '.') {
            j++;
            while (j < expression.length && isDigit(expression[j])) {
              j++;
              digits++;
            }
          }
          if (digits === 0) {
            throw new Error('Invalid number in expression');
          }
          tokens.push({ type: 'num', value: parseFloat(expression.slice(i, j)) });
          i = j;
          continue;
        }
    
        if ('+-*/^()'.indexOf(ch) !== -1) {
          tokens.push({ type: ch });
          i++;
          continue;
        }
    
        throw new Error('Unexpected character: ' + ch);
      }
    
      if (tokens.length === 0) {
        throw new Error('Empty expression');
      }
    
      // ---- Parser (recursive descent) ----
      let pos = 0;
      const peek = () => tokens[pos];
      const isOp = (tok, ch) => tok !== undefined && tok.type === ch;
    
      // expr := term (('+' | '-') term)*          left-associative
      function parseExpression() {
        let value = parseTerm();
        while (isOp(peek(), '+') || isOp(peek(), '-')) {
          const op = tokens[pos++].type;
          const rhs = parseTerm();
          value = op === '+' ? value + rhs : value - rhs;
        }
        return value;
      }
    
      // term := unary (('*' | '/') unary)*        left-associative
      function parseTerm() {
        let value = parseUnary();
        while (isOp(peek(), '*') || isOp(peek(), '/')) {
          const op = tokens[pos++].type;
          const rhs = parseUnary();
          value = op === '*' ? value * rhs : value / rhs;
        }
        return value;
      }
    
      // unary := ('-' | '+') unary | power
      // unary minus is looser than '^', so -2^2 === -(2^2) === -4
      function parseUnary() {
        if (isOp(peek(), '-')) {
          pos++;
          return -parseUnary();
        }
        if (isOp(peek(), '+')) {
          pos++;
          return parseUnary();
        }
        return parsePower();
      }
    
      // power := primary ('^' unary)?             right-associative
      // the exponent is a unary, which permits 2^-1 and 2^3^2 = 2^(3^2)
      function parsePower() {
        const base = parsePrimary();
        if (isOp(peek(), '^')) {
          pos++;
          const exponent = parseUnary();
          return Math.pow(base, exponent);
        }
        return base;
      }
    
      // primary := number | '(' expr ')'
      function parsePrimary() {
        const tok = peek();
        if (tok === undefined) {
          throw new Error('Unexpected end of expression');
        }
        if (tok.type === 'num') {
          pos++;
          return tok.value;
        }
        if (tok.type === '(') {
          pos++;
          const value = parseExpression();
          if (!isOp(peek(), ')')) {
            throw new Error('Missing closing parenthesis');
          }
          pos++;
          return value;
        }
        throw new Error('Unexpected token: ' + tok.type);
      }
    
      const result = parseExpression();
      if (pos !== tokens.length) {
        throw new Error('Unexpected token: ' + tokens[pos].type);
      }
      return result;
    }
    ```

    591 tokens in, 2,442 out (1,491 of them reasoning) · 5.8 s · $0.0030 · 1 message on Pro · answered by deepseek/deepseek-v4.1-flash via Together ·

Claude Haiku 4.5 and DeepSeek V4.1 Flash on every plan

Whether the one-time free trial reaches each model, then each paid plan's messages on it.

Messages on Claude Haiku 4.5 and DeepSeek V4.1 Flash, plan by plan
PlanPriceClaude Haiku 4.5DeepSeek V4.1 Flash
Free$0Not in the trialNot in the trial
Plus$10 a monthUp to 125 a month30 a day
Pro$20 a monthUp to 250 a month60 a day
Max$50 a monthUp to 800 a month120 a day
Ultra$100 a monthUp to 1,800 a month200 a day
Studio$200 a monthUp to 4,000 a month200 a day

Prices don't include tax, which is added where it applies and shown before you pay. A paid plan's month is one allowance shared by every model, so each monthly count is the most you get if all of it goes to that model. It renews each billing period; everyday models refill daily at 00:00 UTC. Long chats count more per reply. How pricing works.

Every limit is published. Paid plans also have a monthly fair-use limit on AI cost: Plus $3.75, Pro $7.50, Max $20, Ultra $42, Studio $85. Using every message on your plan at typical sizes stays under it; very large messages and heavy research use it faster. Every limit, explained.

What differs

  • Messages on Pro

    DeepSeek V4.1 Flash is an everyday model (60 messages a day on Pro); Claude Haiku 4.5 draws on the monthly allowance (up to 250 messages a month on Pro).

  • Context window

    Claude Haiku 4.5 takes up to 200K tokens; DeepSeek V4.1 Flash up to 1.05M tokens. A chat in llmwise holds up to 200k tokens, which fits in either, so the difference shows only through each maker's own API.

  • Images and PDFs

    Both read images. DeepSeek V4.1 Flash gets a PDF's text rather than the file itself.

  • On Free

    Neither is in the free trial: both need a paid plan, from Plus.

  • Where messages go

    Claude Haiku 4.5: Sent to Anthropic directly. DeepSeek V4.1 Flash: Served through OpenRouter, only by hosts that don't store or train on prompts. The maker's own endpoint is never asked.

Fact by fact

Claude Haiku 4.5 and DeepSeek V4.1 Flash, fact by fact
FactClaude Haiku 4.5DeepSeek V4.1 Flash
Context window200K tokens1.05M tokens
Reads imagesYesYes
PDFsWhole fileText only
ReasoningNoYes
API price (October 2026)$1.00 in / $5.00 out per million tokens$0.30 in / $1.20 out per million tokens
A typical message at API prices (4,000 tokens in, 700 out)$0.0075$0.0020
A $10 top-up adds200 messagesNothing: an everyday model's count is daily
Where a message goesSent to Anthropic directly.Served through OpenRouter, only by hosts that don't store or train on prompts. The maker's own endpoint is never asked.
If the provider failsIf Anthropic fails before the reply starts (an overload, a server error, a dropped connection), llmwise sends the same request to Claude Haiku 4.5 through OpenRouter instead.When one host is down, OpenRouter moves the request to another host that meets the same rules.
Anthropic's safety fallbackDoesn't applyDoesn't apply
API prices are what our model catalog lists (Claude: Anthropic's list price; DeepSeek: the price of the OpenRouter endpoints llmwise uses, not DeepSeek's own API). In llmwise you pay per message, not per token: the counts above are what you get.

Claude Haiku 4.5 or DeepSeek V4.1 Flash?

From the facts above and our test runs: the rest is how their answers suit your work, which one chat can show you.

  • Pick Claude Haiku 4.5: it reads a PDF as the whole file, charts and scans included.

  • Pick DeepSeek V4.1 Flash: its messages come from the daily count (60 messages a day on Pro), so they leave the monthly allowance for bigger models.

Each model's page, the families, and other pairs

Claude Haiku 4.5 vs DeepSeek V4.1 Flash is one pair of models. The page below covers the whole families.

Questions

Is Claude Haiku 4.5 or DeepSeek V4.1 Flash cheaper in llmwise?

DeepSeek V4.1 Flash is an everyday model (60 messages a day on Pro); Claude Haiku 4.5 draws on the monthly allowance (up to 250 messages a month on Pro). Every paid plan's monthly allowance is shared by the models on it, so each count is the most you get if it all goes to that model.

Can I try Claude Haiku 4.5 and DeepSeek V4.1 Flash for free?

Neither is in the free trial of 5 messages: both need a paid plan, from Plus.

Which has the bigger context window, Claude Haiku 4.5 or DeepSeek V4.1 Flash?

DeepSeek V4.1 Flash: 1.05M tokens, against 200K tokens. A chat in llmwise holds up to 200k tokens, which fits in either, so the difference shows only through each maker's own API.

Can I use Claude Haiku 4.5 and DeepSeek V4.1 Flash in the same chat?

Yes. Pick Claude Haiku 4.5 for one message and DeepSeek V4.1 Flash for the next; the second sees the whole chat, including the first one's answer.

Which did better in your test runs, Claude Haiku 4.5 or DeepSeek V4.1 Flash?

On the same 50 prompts, run on October 8, 2026, Claude Haiku 4.5 passed 43 and DeepSeek V4.1 Flash passed 48. The table on this page has each job, and every reply is published.

Claude, GPT, Gemini, DeepSeek, Grok, Kimi, GLM, and Mistral, in one chat.

See what a message costs before you send it. Free is 5 messages to try; sign in with an email link, no password or card.