は details
topic marker — names what the sentence is about, so everything after it is the news
うちの犬はスイカが好きなんだよ。
uchi no inu wa suika ga suki na n da yo.
Our dog actually likes watermelon. casual
肉は食べますが、魚は食べません。
niku wa tabemasu ga, sakana wa tabemasen.
I eat meat, but I don't eat fish. neutral
Examples
topic — は names what the sentence is about, and whatever follows it is what is being said about that
うちの犬はスイカが好きなんだよ。
uchi no inu wa suika ga suki na n da yo.
Our dog actually likes watermelon. casual
田中さんは今、大阪に住んでいます。
tanaka-san wa ima, oosaka ni sunde imasu.
Tanaka lives in Osaka these days. neutral
本日の説明会は三階の会議室で行います。
honjitsu no setsumeikai wa sangai no kaigishitsu de okonaimasu.
Today's briefing will be held in the third-floor meeting room. formal
contrast — は on something that is not the topic sets it against the alternatives, whether those are named out loud or only implied
肉は食べますが、魚は食べません。
niku wa tabemasu ga, sakana wa tabemasen.
I eat meat, but I don't eat fish. neutral
ビールは飲むけど、ワインはちょっと。
biiru wa nomu kedo, wain wa chotto.
I'll drink beer, but wine's not really my thing. casual
今日は行きません。
kyou wa ikimasen.
I'm not going today, at any rate. neutral
Formation
{N}はattaches to noun格助詞+は(東京では・母とは・駅からは)attaches to noun phrase (schematic)
Notes
五時までは). Its noun must be something both speakers can already pick
out, which is why a bare question word takes が — ×誰は来ますか.
Related patterns
Similar
Same slot, opposite jobs — は takes its noun as already settled and puts the news after it (私は行きます answers what I will do), while が puts the news on the noun itself (私が行きます answers who), which is why a question word and the answer to it both take が.
The same binding slot, both displacing が and を — は sets its noun apart from whatever else was on the table, も piles it onto something already true, so 私は行きます leaves open what everyone else does and 私も行きます says someone already is.
を does not survive topic marking — は and も displace it outright, so an object raised to topic loses it (本は読んだ, ×本をは読んだ), which is why a sentence with no を in it may still have an object.
Lookalikes
〜ては is this same は sitting on a て-form, but the pair has frozen into a conditional with a bad ending (そんなに飲んでは体に悪い) — a noun before は marks a topic, a て-form before it never does.