Prepare 2025: How to Get Reliable Weather Alerts

By Scott Roberts

You’d think in an age where your fridge can tell you when you’re out of milk, getting timely, accurate weather information would be easy. Instead, it’s getting more difficult. Social media algorithms, internet hype machines, and flat-out misinformation mean you have to work harder to get the right info at the right time.

Let’s talk about three big problems—and what you can do to fix them.


Problem 1: Timeliness

 

Ever seen a post pop up in your feed that says “SEVERE STORMS EXPECTED TODAY” only to check the date and realize it’s from two days ago? That’s because Facebook (and other social platforms) don’t prioritize showing posts in real time. When I first wrote on this topic in 2016, I had a friend have one of my advertised weather outlooks show up 3 days late. That was an oddity then, but I’ll bet you have five friends and pages who have posted today, and you won’t see their post until next weekend! My record so far for something appearing in my newsfeed is 8 days afterward.

Solution: Have multiple ways to get information.

Think of it like a backup plan:
Weather radio – Old-school, but it works. It should be your go-to for immediate alerts.
Local TV/radio – The folks at your local stations are trained to cut through the noise and give you clear, actionable info.
Smartphone apps – Pick a reliable one (more on that in a minute).
Twitter (now X) – Some meteorologists and NWS offices still use it for real-time updates.
Facebook? Meh. It’s fine for long-range discussion, but not for urgent warnings.

📌 Pro tip: If you see a post from someone you want to keep up with, click through and read the article. Platforms track this more than likes and shares, and it helps you see more from them in the future.


Problem 2: The Algorithm Decides What You See (Not You)

If I don’t pay to boost posts, Facebook shows them to maybe 60-100 people of the thousands who follow my page. If I spend money, I can get that number higher. But guess who doesn’t have an advertising budget? Your local emergency manager.

Your favorite TV meteorologist? Their station isn’t likely throwing ad dollars at Facebook either—it’s a competitor. That means critical updates can get buried under cat videos and five-year-old viral posts resurfacing for no reason.

Solution: Get your forecasts directly.

Subscribe to email alerts – Many local meteorologists and weather services offer email subscriptions. Sign up so you don’t miss important updates.
Set up Wireless Emergency Alerts (WEAs) – These are the messages that blast your phone when there’s a Tornado Warning or other life-threatening event. More on that below.
Turn on push notifications for weather apps – The key is making sure they notify you immediately when something important happens.

📌 Pro tip: If you see an urgent Facebook post and it’s still relevant, share it. That helps override the algorithm’s nonsense and get it in front of more people.


Problem 3: Hype, Misinformation, and Fake Photos

Ah, social media’s favorite sport: overhyping the weather. Right now, I guarantee you someone on Twitter is talking about a “historic” snowstorm for the middle of next week. Is it real? Probably not. Does it have an impressive-looking snowfall map with totals higher than what anyone is forecasting? Absolutely.

Then there’s the other issue: people posting photos of past storms (or AI-generated images) and passing them off as current. “LOOK AT THIS TORNADO HITTING WICHITA RIGHT NOW” …except it’s a picture from 2013. Happens every single time.

I can only get this kind of obviously AI result … others are MUCH better

AI-generated image of a "Wedge tornado seen from less than a mile"
AI-generated image of a “Wedge tornado seen from less than a mile”

Solution: Stick to trusted sources.

National Weather Service (NWS) & local meteorologists – They follow strict verification procedures.
Emergency managers & local officials – They don’t deal in hype, just facts.
Me (and folks like me) – I aim to share timely, accurate information, but I’ll always prioritize reporting to NWS first.

📌 Pro tip: Before sharing a dramatic weather photo, do a reverse image search. If it’s been on the internet for years, don’t fall for it. And if it looks too good it’s likely AI. Real life has easily figured out imperfections (looking at you, my friend who always has phone poles and lines in his storm photos!!)


How to Get Warnings: Setting Up WEA Alerts

One of the easiest ways to stay ahead of dangerous weather is to make sure your phone gets Wireless Emergency Alerts (WEAs). These are free, government-issued alerts that automatically push to your phone for things like Tornado Warnings and extreme wind events.

How to check your WEA settings (iPhone & Android):

🔹 iPhone: Go to Settings > Notifications > Emergency Alerts and make sure they’re ON.
🔹 Android: Open Settings > Safety & emergency > Wireless emergency alerts, then check that extreme weather alerts are enabled.

When You’ll Get a WEA Alert:

✔ Tornado Warnings
✔ Flash Flood Warnings (sometimes)
✔ Extreme Wind Warnings
✔ Evacuation Orders
✔ AMBER Alerts

📌 Pro tip: You can disable AMBER alerts if you need to, but don’t turn off weather alerts. They could save your life.


Final Thoughts: Stay Smart, Stay Safe

Getting good weather information shouldn’t be this complicated, but here we are. Social media isn’t reliable for real-time warnings, hype is everywhere, and fake images make it harder to know what’s real.

The good news? You can take control by using trusted sources, setting up alerts, and keeping multiple ways to get updates.

Weather changes fast—make sure your information does too.


Want reliable forecasts? Sign up for my email updates. Look for the confused pupper on the home page.

weather ready ambassador

KSStorm.Info is a Weather Ready Ambassador

.st1{display:none}Members Get More

Additional details are available for these membership levels: Basic Enthusiast
Join Now
Already a member? Log in here
Keep Up to Date - Enable Notifications OK No thanks
1 - Query: SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
    Time: 0.696 ms
2 - Query: SELECT * FROM wp_pmpro_membership_levels
    Time: 0.152 ms
3 - Query: SET time_zone = "+00:00"
    Time: 0.648 ms
4 - Query: SELECT t0.name AS name_1, t0.value AS value_2, t0.id AS id_3, t0.created_at AS created_at_4, t0.updated_at AS updated_at_5 FROM wp_mailpoet_settings t0
    Time: 0.371 ms
5 - Query: SHOW TABLES LIKE 'wp\\_ewwwio\\_images'
    Time: 0.841 ms
6 - Query: select option_name, option_value from wp_options where option_name like 'mcloud%'
    Time: 1.171 ms
7 - Query: SHOW TABLES LIKE 'wp_mcloud_pending_optimizations'
    Time: 0.793 ms
8 - Query: SHOW TABLES LIKE 'wp_mcloud_bg_optimizations'
    Time: 0.304 ms
9 - Query: SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbb845775ff53c4a11a5569812f8843b49' AND table_name IN ('wp_toolset_associations', 'wp_toolset_connected_elements', 'wp_toolset_relationships', 'wp_toolset_type_sets')
    Time: 0.980 ms
10 - Query: SELECT count(w0_.id) AS sclr_0 FROM wp_mailpoet_subscribers w0_ WHERE w0_.deleted_at IS NULL AND w0_.status IN ('subscribed', 'unconfirmed', 'inactive')
      Time: 0.340 ms
11 - Query: SELECT a.action_id FROM wp_actionscheduler_actions a LEFT JOIN wp_actionscheduler_groups g ON g.group_id=a.group_id WHERE 1=1 AND g.slug='mailpoet-cron' AND a.hook='mailpoet/cron/daemon-trigger' AND a.args='[]' AND a.status IN ('in-progress', 'pending') LIMIT 0, 1
      Time: 0.301 ms
12 - Query: SELECT DISTINCT t.trigger_key FROM `wp_mailpoet_automations` AS a JOIN `wp_mailpoet_automation_triggers` as t WHERE a.status = 'active' AND a.id = t.automation_id ORDER BY trigger_key DESC
      Time: 0.237 ms
13 - Query: SELECT id FROM wp_pmpro_membership_levels LIMIT 1
      Time: 0.260 ms
14 - Query: SELECT id FROM wp_pmpro_membership_levels WHERE allow_signups = 1 AND (initial_payment > 0 OR billing_amount > 0 OR trial_amount > 0) LIMIT 1
      Time: 0.074 ms
15 - Query: SELECT user_id FROM wp_pmpro_memberships_users WHERE initial_payment > 0 OR billing_amount > 0 OR trial_amount > 0 LIMIT 1
      Time: 0.062 ms
16 - Query: SELECT DISTINCT meta_value FROM wp_postmeta WHERE meta_key = '_view_loop_template' AND meta_value != '0' ORDER BY post_id
      Time: 0.339 ms
17 - Query: SELECT ID, post_name, post_parent, post_type FROM wp_posts WHERE post_name IN ('prepare-2025-how-to-get-reliable-weather-alerts') AND post_type IN ('page','attachment')
      Time: 0.663 ms
18 - Query: SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'prepare-2025-how-to-get-reliable-weather-alerts' AND wp_posts.post_type = 'post' ORDER BY wp_posts.post_date DESC
      Time: 0.589 ms
19 - Query: SELECT autoload FROM wp_options WHERE option_name = 'pmpro_visits' LIMIT 1
      Time: 0.569 ms
20 - Query: SHOW FULL COLUMNS FROM `wp_options`
      Time: 1.121 ms
21 - Query: UPDATE `wp_options` SET `option_value` = 'a:9:{s:5:\"today\";i:347;s:8:\"thisdate\";s:10:\"2025-12-07\";s:4:\"week\";i:4885;s:8:\"thisweek\";s:2:\"28\";s:5:\"month\";i:11693;s:9:\"thismonth\";s:1:\"7\";s:3:\"ytd\";i:293404;s:8:\"thisyear\";s:4:\"2025\";s:7:\"alltime\";i:1510628;}' WHERE `option_name` = 'pmpro_visits'
      Time: 0.699 ms
22 - Query: SELECT ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( wp_postmeta.meta_key = '_seopress_redirections_enabled' AND wp_postmeta.meta_value = 'yes' ) ) AND post_title = 'prepare-2025-how-to-get-reliable-weather-alerts/' AND post_type = 'seopress_404' AND post_status = 'publish' AND ( ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'only_not_logged_in' ) OR ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'both' ) )
      Time: 0.755 ms
23 - Query: SELECT ID FROM wp_posts WHERE 1=1 AND post_title = 'prepare-2025-how-to-get-reliable-weather-alerts/' AND post_type = 'seopress_404'
      Time: 0.630 ms
24 - Query: SELECT ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( wp_postmeta.meta_key = '_seopress_redirections_enabled' AND wp_postmeta.meta_value = 'yes' ) ) AND post_title = '' AND post_type = 'seopress_404' AND post_status = 'publish' AND ( ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'only_not_logged_in' ) OR ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'both' ) )
      Time: 0.084 ms
25 - Query: SELECT ID FROM wp_posts WHERE 1=1 AND post_title = '' AND post_type = 'seopress_404'
      Time: 0.099 ms
26 - Query: SELECT ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( wp_postmeta.meta_key = '_seopress_redirections_enabled' AND wp_postmeta.meta_value = 'yes' ) ) AND post_title = 'prepare-2025-how-to-get-reliable-weather-alerts' AND post_type = 'seopress_404' AND post_status = 'publish' AND ( ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'only_not_logged_in' ) OR ( mt1.meta_key = '_seopress_redirections_logged_status' AND mt1.meta_value = 'both' ) )
      Time: 0.411 ms
27 - Query: SELECT ID FROM wp_posts WHERE 1=1 AND post_title = 'prepare-2025-how-to-get-reliable-weather-alerts' AND post_type = 'seopress_404'
      Time: 0.187 ms
28 - Query: SELECT p.ID FROM wp_posts AS p WHERE p.post_date < '2025-03-05 05:55:00' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date DESC LIMIT 1
      Time: 0.661 ms
29 - Query: SELECT p.ID FROM wp_posts AS p WHERE p.post_date > '2025-03-05 05:55:00' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date ASC LIMIT 1
      Time: 0.696 ms
30 - Query: SELECT DISTINCT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'wpmf_tag', 'event') AND tr.object_id IN (128016) ORDER BY t.name ASC
      Time: 0.295 ms
31 - Query: SELECT DISTINCT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (128016) ORDER BY tt.parent DESC
      Time: 0.250 ms
32 - Query: SELECT autoload FROM wp_options WHERE option_name = 'pmpro_views' LIMIT 1
      Time: 0.546 ms
33 - Query: UPDATE `wp_options` SET `option_value` = 'a:9:{s:5:\"today\";i:478;s:8:\"thisdate\";s:10:\"2025-12-07\";s:4:\"week\";i:5921;s:8:\"thisweek\";s:2:\"28\";s:5:\"month\";i:12416;s:9:\"thismonth\";s:1:\"7\";s:3:\"ytd\";i:304791;s:8:\"thisyear\";s:4:\"2025\";s:7:\"alltime\";i:1014834;}' WHERE `option_name` = 'pmpro_views'
      Time: 0.382 ms
34 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128016')
      Time: 0.283 ms
35 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128016')
      Time: 0.336 ms
36 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128016')
      Time: 0.307 ms
37 - Query: SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (128019) ORDER BY meta_id ASC
      Time: 0.731 ms
38 - Query: SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (128018) ORDER BY meta_id ASC
      Time: 0.609 ms
39 - Query: SELECT wp_posts.* FROM wp_posts WHERE ID IN (128019,128018)
      Time: 0.652 ms
40 - Query: SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = '2025/03/dall-e-2025-03-01-21.14.02-a-first-person-view-of-a-massive-wedge-tornado-with-a-wide-squat-base-and-low-hanging-dark-clouds-tearing-through-a-green-wheat-field.-the-perspecti.avif'
      Time: 26.417 ms
41 - Query: SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = '2025/03/nws_alert_wea4.avif'
      Time: 25.321 ms
42 - Query: select post_id from wp_mcloud_post_map where post_url = 'https://ksstorm.info/wp-content/uploads/2025/03/nws_alert_wea4.avif' order by post_id desc limit 1
      Time: 0.274 ms
43 - Query: select ID from wp_posts where post_type='attachment' and guid = 'https://ksstorm.info/wp-content/uploads/2025/03/nws_alert_wea4.avif' order by ID desc limit 1
      Time: 3.415 ms
44 - Query: select ID from wp_posts where post_type='attachment' and guid like '%wp-content/uploads/2025/03/nws_alert_wea4.avif' order by ID desc limit 1
      Time: 5.732 ms
45 - Query: SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = 'https://images.ksstorm.info/2023/02/weather-ready-ambassador.jpg'
      Time: 25.991 ms
46 - Query: select post_id from wp_mcloud_post_map where post_url = 'https://images.ksstorm.info/2023/02/weather-ready-ambassador.jpg' order by post_id desc limit 1
      Time: 0.322 ms
47 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128016')
      Time: 0.337 ms
48 - Query: SELECT DISTINCT(mp.page_id) FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_posts p ON mp.page_id = p.ID WHERE p.post_type IN('page', 'post')
      Time: 0.217 ms
49 - Query: SELECT DISTINCT(tr.object_id) FROM wp_term_relationships tr LEFT JOIN wp_posts p ON tr.object_id = p.ID WHERE tr.term_taxonomy_id IN( SELECT category_id FROM wp_pmpro_memberships_categories ) AND p.post_type IN('page', 'post')
      Time: 0.096 ms
50 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128006')
      Time: 0.289 ms
51 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(20,153) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '128033')
      Time: 0.266 ms
52 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(23) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '127306')
      Time: 0.220 ms
53 - Query: (SELECT m.id, m.name FROM wp_pmpro_memberships_categories mc LEFT JOIN wp_pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(23) AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM wp_pmpro_memberships_pages mp LEFT JOIN wp_pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '127215')
      Time: 0.230 ms
54 - Query: select * from `wp_fluentform_forms` where `status` = 'published' and `id` = '19' limit 1
      Time: 0.418 ms
55 - Query: select * from `wp_fluentform_form_meta` where `form_id` = '19' and `meta_key` = 'formSettings' limit 1
      Time: 0.197 ms
56 - Query: select * from `wp_fluentform_form_meta` where `form_id` = '19' and `meta_key` = '_ff_selected_style' limit 1
      Time: 0.210 ms
57 - Query: select * from `wp_fluentform_form_meta` where `form_id` = '19' and `meta_key` in ('_custom_form_css', '_custom_form_js')
      Time: 0.259 ms
58 - Query: select * from `wp_fluentform_form_meta` where `form_id` = '19' and `meta_key` in ('_ff_form_styler_css', '_ff_selected_style', 'ffs_default')
      Time: 0.089 ms
59 - Query: select * from `wp_fluentform_form_meta` where (`form_id` = '19' and `meta_key` = 'ffs_default') limit 1
      Time: 0.237 ms
60 - Query: select * from `wp_fluentform_form_meta` where (`form_id` = '19' and `meta_key` = '_ff_form_styles') limit 1
      Time: 0.158 ms
Total Queries: 60
Total Time: 109.819 ms