The short answer: run the search, click Export in the job toolbar under the search bar, and choose Raw Events, CSV or JSON. For a few thousand events, that’s all you need. For bigger pulls, skip the browser and use the splunk search CLI or the REST export endpoint. Both stream results instead of making Splunk Web build one huge file for you.
Why export from Splunk at all, if the data is already indexed? Usually because someone outside your Splunk needs to look at it: an IR partner, a colleague on another team, or you, on a laptop, without writing SPL for an hour. Prime Core has 23,674 detection rules for Splunk mapped to 676 MITRE ATT&CK techniques. That’s a lot of detection logic you can run against a small slice of your data once it’s out. Below is how to get that slice, sanitize it, and investigate it for free in LogTotal.
TL;DR
| Route | Use it when | What you need |
|---|---|---|
| Splunk Web → Export | One-off, small export, you already have the search open | Search access to the index |
| splunk search CLI | You have a shell on a Splunk Enterprise search head | OS access + Splunk credentials |
| REST search/jobs/export | Large exports, scripting, or Splunk Cloud | Access to the management port (8089) + a token |
Before you start
Three things decide which route works for you: where your Splunk runs, what your role can search, and whether you’re allowed to take the data out.
- Index access. You can only export what your role can search. If a search comes back empty but you know the data is there, check your role’s allowed indexes before you start rewriting SPL. Put index= in the search explicitly; don’t rely on default indexes.
- Splunk Cloud vs. Enterprise. On Splunk Cloud Platform there’s no shell, so the CLI route is out. The REST API isn’t on by default either: someone has to request access for your stack, and free trials can’t use it at all. Splunk Web export works everywhere.
- Permission to export. Raw logs carry usernames, hostnames, internal IPs, sometimes tokens in URLs. LogTotal sanitizes uploads before analysis, but your company’s data-handling policy still applies. Get the OK first. It takes five minutes, and you’ll want it in writing if this turns into an incident.
The commands below follow Splunk’s current documentation for Splunk Enterprise and Splunk Cloud Platform, checked in October 2026. Links to every page we used are at the end.
Step 1: Scope the search before you export anything
The most common mistake is exporting a whole index “just in case.” You end up with a file nobody wants to open. Decide what question you’re answering, then pin down index, sourcetype, host and time:
index=linux sourcetype=linux_secure host=web-03 earliest=-24h@h latest=@h
For Windows Security events collected by the Splunk Add-on for Windows in XML mode:
index=wineventlog source="XmlWinEventLog:Security" host=dc-01 earliest=-24h@h latest=@h
Two rules keep the export useful.
Keep _raw. If the search ends with stats, table or chart, you’re exporting a summary, not logs, and Splunk Web will grey out the Raw Events format. Export events, not results. If you go with JSON, trim the extracted fields so the file doesn’t triple in size:
... | fields _time host source sourcetype _raw
Use absolute time when it matters. earliest=-24h means something different every minute. If Splunk has to rerun your search during export (more on that below), a relative window can return a slightly different set of events. For anything incident-related, use exact timestamps.
One thing to know about Windows data: Splunk doesn’t keep the original .evtx files. It indexes the rendered event text, XML or classic key=value. So what you export is that text, not a binary EVTX.
Step 2a: Export from Splunk Web
Fine for small, one-off exports when the search is already on your screen.
- Run the search and let the job finish. Exporting a running job just gets you a partial picture.
- Click Export (the download arrow) in the row of job actions under the search bar.
- Pick the format. Raw Events gives you the original log lines exactly as they were indexed, which is what you want for syslog-style sources like linux_secure. JSON keeps host, source and sourcetype next to each event. That helps when the export spans several hosts.
- Name the file something you’ll recognize next week, for example web-03_sshd_2026-10-19.log.
- Leave Number of Results empty to export everything the search returned. If you type 500, you get the first 500 and nothing tells you there were more.
- Click Export.
A detail that confuses people: export works from the search job artifact, not from what you see in the browser. If Splunk didn’t keep every result with the job, the dialog warns that it will rerun the search first. That’s normal. It just takes longer, which is why the absolute time range from Step 1 matters. Very long exports can also hit the Splunk Web session timeout. If the export runs for minutes, switch to the CLI or REST.
Step 2b: Export with the Splunk CLI (Enterprise only)
If you have a shell on the search head, this is the fastest route and the easiest to script. Log in first, so your password doesn’t end up in shell history the way it would with -auth:
$SPLUNK_HOME/bin/splunk login
$SPLUNK_HOME/bin/splunk search \
'index=linux sourcetype=linux_secure host=web-03 earliest="10/19/2026:00:00:00" latest="10/20/2026:00:00:00"' \
-preview 0 -maxout 0 -output rawdata > web-03_sshd.log
What each flag does:
- -maxout 0 removes the cap. By default the CLI exports 100 events and stops without a word. If your file has exactly 100 lines, this is why, not a quiet host.
- -preview 0 keeps preview results out of the file.
- -output rawdata writes the original lines. Use -output json if you want structured events with metadata.
You can also run the CLI against a remote search head with -uri https://<search-head>:8089, as long as the management port is reachable from where you are.
Two quick sanity checks before you upload:
wc -l web-03_sshd.log
head -3 web-03_sshd.log
For single-line sources like linux_secure, the line count should roughly match the event count Splunk Web shows for the same search. The first lines should look like log lines, not error messages.
Step 2c: Stream results through the REST API
This is the route for big exports, scheduled pulls and Splunk Cloud (once REST access is enabled for your stack). The export endpoint streams results while the search runs, so there’s no job to poll and no result pages to walk through.
Use an authentication token instead of a username and password. You create one in Settings → Tokens, if your admin has token authentication turned on.
export SPLUNK_TOKEN='<your token>'
curl -sS \
-H "Authorization: Bearer $SPLUNK_TOKEN" \
https://sh01.example.com:8089/services/search/v2/jobs/export \
--data-urlencode search='search index=linux sourcetype=linux_secure host=web-03' \
-d earliest_time='2026-10-19T00:00:00.000+00:00' \
-d latest_time='2026-10-20T00:00:00.000+00:00' \
-d output_mode=raw \
-o web-03_sshd.log
Things that trip people up:
- The search string has to start with search (or a generating command such as | tstats). Paste your query without it and Splunk rejects it.
- output_mode=raw gives you the original lines, and it’s the fastest mode. output_mode=json streams one JSON object per line, with the event sitting under a result key. If you only want the events themselves, strip the envelope with jq: jq -c ‘select(.result) | .result’ export.json > events.ndjson. For a LogTotal upload, stick with raw.
- Lab instances often use self-signed certificates, and every Stack Overflow answer will tell you to add -k. In production, point curl at your CA with –cacert instead.
- If you POST to search/v2/jobs and read from /results, the server caps rows per request, and you have to page with offset. export doesn’t, which is the reason to use it here.
Step 3: Upload, sanitize and review in LogTotal
LogTotal is SOC Prime’s free service for running detection logic against a log file without setting anything up. It sanitizes what you upload and doesn’t keep your files.
- Upload. Open logtotal.com and drop in the file from Step 2.
- Sanitize. Look it over before you continue. You know your environment better than any masking rule does.
- Review.
When the export goes wrong
| Symptom | Likely cause | Fix |
|---|---|---|
| CLI file has exactly 100 events | Default -maxout is 100 | Add -maxout 0 |
| Raw Events is greyed out in the Export dialog | The search ends in a transforming command (stats, table, chart) | Export the events instead, or choose JSON |
| Search returns nothing, but the data is there | Index isn’t in your role’s allowed or default indexes, or wrong time range | Add index= explicitly; ask your admin about the role |
| Dialog says the search will be rerun | The job artifact didn’t keep every result | Expected behavior; use an absolute time range so the rerun returns the same events |
| Browser export stalls or the file is cut short | Splunk Web session timeout on a long export | Switch to the CLI or REST |
| 401 Unauthorized from curl | Token expired, disabled, or token auth is off | Create a new token in Settings → Tokens |
| curl hangs or gets connection refused on 8089 | Management port blocked, or REST not enabled on Splunk Cloud | Check firewall rules; request REST access for your Cloud stack |
| REST returns a search syntax error | The query doesn’t start with search | Prefix it with search |
| JSON file is far bigger than expected | Every extracted field got exported | Add | fields _time host source sourcetype _raw |
FAQ
Can I export logs from Splunk Cloud?
Yes. Splunk Web export works the same as on Enterprise. The REST export endpoint works once API access is enabled for your stack; free trials don’t get it. The CLI isn’t an option, because there’s no shell on Splunk Cloud.
Can I get the original EVTX files back out of Splunk?
No. Splunk stores the rendered event text, not the binary .evtx. You can export that text as raw events or JSON. For real EVTX files, export them from the Windows host itself.
Raw Events or JSON: which one should I pick for LogTotal?
Raw. You get the same lines that sit on the host, and LogTotal reads syslog-format files as they are. JSON wraps each event in Splunk’s own structure. It’s handy when you need host and sourcetype next to every event, but for a LogTotal upload, raw is the safer choice.
Is it safe to upload a Splunk export to an online tool?
LogTotal sanitizes uploads before analysis and doesn’t retain files.
How many events can I export?
On the Splunk side, as many as you like: leave Number of Results empty in Splunk Web, or set -maxout 0 in the CLI. In practice, the limit is the upload size on the other end. So it pays to scope the search properly in Step 1.