WebFirst Language · v26.1 alpha

Programming that reads like plain English.

WFL mirrors how people think — natural-language syntax, almost no special characters, and errors that actually tell you what to do. A first language you never have to unlearn.

No frameworks Built-in web server Open source · Apache 2.0
server.wfl
1// A web server, in plain English
2listen on port 8080 as server
3display "Running at http://127.0.0.1:8080"
4
5wait for request comes in on server as req
6check if path is equal to "/":
7 respond to req with "Hello from WFL!"
8otherwise:
9 respond to req with "Not found" and status 404
10end check
Read it out loud

You already know the syntax

No cryptic operators, no ceremony. The same idea, side by side.

access.wfl
1store user age as 28
2change user age to 29
3
4check if user age is greater than 18:
5 display "Access granted"
6otherwise:
7 display "Must be 18 or older"
8end check
access.js
1let userAge = 28;
2userAge = 29;
3
4if (userAge > 18) {
5 console.log("Access granted");
6} else {
7 console.log("Must be 18 or older");
8}
access.py
1user_age = 28
2user_age = 29
3
4if user_age > 18:
5 print("Access granted")
6else:
7 print("Must be 18 or older")
What's in the box

Batteries included, jargon excluded

Natural-language syntax

Write store name as "Alice" instead of cryptic symbols. Code that explains itself.

Type safety with inference

The compiler infers types and catches mismatches before your program ever runs.

Built-in web server

listen on port 8080 — HTTP servers, routing and responses without a single framework.

Readable pattern matching

one or more letter followed by "@" — validation you can read without being a regex expert.

Containers (OOP)

Classes, properties and actions expressed in the same plain-English grammar.

Errors that help

Elm-inspired messages point at the line, explain the mismatch, and suggest a fix.

Clear & actionable

Errors that read like a helpful colleague

When something's off, WFL tells you exactly what it expected, what it found, and how to fix it — inspired by Elm.

No error codes to google

Every message includes the line, the mismatch, and a concrete suggestion.
✕ Type Error  line 5, column 8

    Expected: Number
    Found:    Text ("hello")

  The expression
    age plus "hello"
  cannot add a Number and Text.

  💡 Try converting first:
    age plus 5
    — or —
    string of age with "hello"

Say hello in one line

Install WFL and run your first program in under a minute.

$ wfl hello.wfl Hello, World!