Good day.
After getting tired of manually to editing .zwo files, I wrote a quick html/javascript utility that helps runners generate .zwo files for their own custom workouts.
The site is http://opensourcetreadmill.com/
Or click here
Step 1
Enter your zwift paces so the actual speeds will match your future runs in zwift. The web-page will “store” these preferences as a cookie.
Step 2
Enter a warmup, interval, steady state or cooldown using the tools provided
Step 3
download the .zwo file and move it to your workouts folder. The instructions for this have been detailed elsewhere.
elsewhere
Zwift ID
Step 4
You must run ZWIFT from the same computer you stored the .zwo file on. These workouts will carry-over to all your other zwift devices.
Step 5
Let me know how I can make this better. This is really fresh and new. And, quite frankly, It may not work at all. But it works for me.
All distances are in miles. Sorry.
This is awesome! Thank you so much…
dad
It works well. At least for me. There is a lot of potential-- especially with the ability to create more complicated runs, like the Michigan.
Just added RANDOM QUOTE capability. Ongoing RANDOM QUOTE capability in-process
That’s epic. Thanks very much. Is there a possibility of having a metric one as well?
Absolutely. I prefer running Metric. (My numbers are higher, so I must be running faster, right??!!)
Working on it now.
1 Like
Legend! Thank you!
Is there a way for Zwift running to be based on time yet? I read a few updates ago that they were working on time intervals being a thing instead of just distance. Can you shed any light on if that can be done yet?
1 Like
Running timed intervals is a huge part of training. Sadly, I don’t know you to make timed intervals work in Zwift. The web-site in this post can, however, estimate the time it will take (you) to complete an interval at a percentage of your pace. E.G. I want to run a five minute interval at 75% of my 10k pace. The duration/power combination is 0.55Miles. The program displays and adjusts the interval-time to help me plan close to a five minute (timed) intervals. See below.

Sadly, this will only work for you after you enter your paces and, since somebody else’s paces are unique to them,… this approach doesn’t carry over well.
But it will allow, I hope, you to generate workouts that work. But only for you.
Hope this helps-- I’m gonna keep experimenting. and if I discover something, I’ll incorporate it.
If anybody reading this has some insight to the timed-interval elements in the .zwo xml file, we would all love to hear it!
Now you can select from over a hundred running quotes that will magically appear at set intervals. These quotes will carry-over into your run. Currently, the quotes are only selectable at set distances (like every 0.25 miles for the entire interval). Capability also exists for quotes/text at any given time (like every five minutes) during an interval.
Or, just select a one-time quote. Or add your own.
I’m working on ability to add celebration-effect, camera angles, max-effort, forced Performance test(s), Free Run and testing modes. They are described in the unofficial .zwo specification. It is unknown if they will work for runners…
Added graphical workout illustration. Colors are similar to Zwift based on experimentation:
Gray 0-56% 10K pace
Blue 56-76% 10K pace
Green 76-90%
Yellow 90-100%
Orange 100-106%
Red >106%

This is brilliant. Thank you so much.
The comment regarding the timed workouts was that it was mentioned in an update and then nothing has been mentioned since.
That’s software, in general.
Question: do timed intervals function for riders?
From day dot cycling workouts on Zwift have been time based, and run workouts have been distance based.
New look.
Added graphical display and an accordion-based interval editor.
Still not perfect, but I think it helps a lot.
Interval segments can now be time-based or distance based.
If Time Based is chosen, the computer back-calculates the distance required based on power and pace.
In this case, I want to run exactly a fifteen minute interval at 100 percent of my 10K pace.
Hi, thanks for the great app. Its working fine for me with imperial units. I just entcountered a strange bug when using metric units:
300 m are always interpreted as 400 m in Zwift. The first steady state in this file for example. No clue why 
> <workout_file>
> <author>Test</author>
> <name>test</name>
> <description>test</description>
> <category>Test</category>
> <sportType>run</sportType>
> <workout>
> <SteadyState Power="0.85" Duration="300" pace="2" >
> </SteadyState>
> <IntervalsT Repeat="3" OnPower="1.15" OnDuration="200" OffPower="0.85" OffDuration="400" pace="2" >
> </IntervalsT>
> <SteadyState Power="1.15" Duration="200" pace="2" >
> </SteadyState>
> </workout>
> </workout_file>